Git无法推送代码:已删除大文件触发GitHub大小限制
解决Git推送时残留大文件的问题
这个问题我碰到过好多次了——你虽然删掉了本地的文件,但Git的提交历史里还留着这个大文件的痕迹,所以推送时GitHub还是会检测到它。下面给你两个靠谱的解决办法,按你的场景选就行:
场景1:大文件是最近一次未推送的提交里添加的
如果这个大文件是你刚提交还没推送到远程的,操作很简单:
- 先撤销这次提交(不会删掉你本地的文件变更,只是把提交记录撤回来):
git reset HEAD~1 - 确保这个大文件已经被彻底删除,或者把它添加到
.gitignore文件里(如果以后都不想让Git追踪它的话) - 重新添加所有文件并提交:
git add .git commit -m "Fix: Remove large Test.zip file" - 最后推送:
git push origin master
场景2:大文件在更早的历史提交里
如果这个大文件是之前好几次提交里都存在的,就得彻底清理Git历史了,推荐用官方现在主推的git filter-repo工具(比旧的filter-branch更安全稳定):
- 先确认你装了
git filter-repo——大部分新版本Git自带,要是没有的话,用包管理器装就行(比如Mac上brew install git-filter-repo,Windows上用Chocolatey或者直接下载二进制文件) - 运行命令彻底从所有历史提交中删除这个大文件:
git filter-repo --path AllFiles/Test.zip --invert-paths - 验证一下历史里是不是已经没这个文件了:
git log --all -- AllFiles/Test.zip
如果没有任何输出,就说明清理成功了 - 强制推送到远程(因为修改了历史记录,所以必须加
--force;要是多人协作的仓库,记得先通知队友同步代码,避免冲突):git push origin master --force
额外提醒
- 要是经常需要处理大文件,建议用
Git LFS(大文件存储)来管理,它会把大文件存在单独的存储里,不会污染Git历史 - 提交前可以用
git status或者git ls-files检查一下,避免不小心把大文件加进去
内容的提问来源于stack exchange,提问作者Pugl
相关产品推荐
相关产品推荐

