能否编辑Git历史提交移除大文件以顺利推送到GitHub?
remote: error: Trace: 0f04f657da56cd2cf86526f44eae8995d1ae359b6e251f112da0794686a722e3
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File data/v-2021/AIRS.2006.12.31.L3.RetStd001.v6.0.9.0.G13155192744.hdf is 380.41 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: GH001: Large files detected. You may want to try Git Large File Storage -
新手可用的解决方法
你之前执行的git filter-branch --tree-filter 'rm -f *.hdf' HEAD命令仅匹配了仓库根目录的hdf文件,待清理的大文件存放在子目录中,因此没有被成功从历史记录移除,导致推送仍然报错。以下两种方案按需选择即可:
方案1:全新初始化仓库(零学习成本,最快可用)
你已经有完整的最新代码备份,优先选这个方案,不会出现任何操作失误:
- 打开本地项目文件夹,删除根目录下的
.git隐藏文件夹(Windows可在文件管理器顶部勾选「显示」→「隐藏的项目」,Mac按Command+Shift+.显示隐藏文件) - 确认
.gitignore文件中已经添加了*.hdf规则,且本地所有hdf文件都不会被git add扫描到 - 在项目根目录打开终端,依次执行如下命令:
# 初始化新的Git仓库 git init # 提交所有当前代码 git add . git commit -m "init: 初始化项目,已排除hdf大文件" # 关联你的GitHub远程仓库地址 git remote add origin 你的GitHub仓库HTTPS/SSH地址 # 推送到远程仓库主分支(如果远程非空需要加-f参数强制覆盖) git push -u origin main
方案2:重写Git历史保留原有提交记录
如果需要保留之前的5条提交记录,使用git filter-repo工具操作,比filter-branch逻辑更简单不容易出错:
- 先安装
git filter-repo:最新版Windows Git默认自带,Mac执行brew install git-filter-repo安装 - 项目根目录打开终端执行命令,全局删除所有历史提交中的hdf文件:
git filter-repo --invert-paths --path-glob '*.hdf'
- 执行完成后确认本地代码正常,执行推送即可:
git push -u origin main -f
注意:两种方案操作前都确认你的本地代码备份是最新可用的,避免操作异常丢失代码。
内容的提问来源于stack exchange,提问作者The_Tams
相关产品推荐
相关产品推荐

