You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

误传大文件至GitHub后本地删除,GitBash无法上传文件求助

解决Git历史中大文件残留的问题

嘿,这个坑我之前也踩过!你遇到的情况核心原因是:你虽然在本地删除了大文件,但它还藏在Git的提交历史里。Git会保存每一次提交的完整快照,哪怕你后来删掉了文件,只要之前有过包含这个大文件的提交,Git在推送时就会检查所有历史记录,自然会触发大文件检测——而GitHub仓库里看不到它,只是因为仓库的最新版本已经把它删掉了而已。

怎么找到这个藏起来的大文件?

你可以用下面的命令找出仓库里体积最大的几个对象,以及它们对应的提交记录:

git log --all --objects | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"

这个命令会帮你定位到是哪一次提交把大文件加进了仓库,方便后续清理。

彻底移除历史中的大文件

推荐用官方现在更推荐的git filter-repo工具(比旧的git filter-branch更安全可靠):

  1. 首先确保你已经安装了git filter-repo(如果没有,大部分包管理器都能直接安装,比如brew install git-filter-repo或者apt install git-filter-repo)
  2. 运行命令移除历史中指定的大文件:
git filter-repo --path /path/to/your/large/file --invert-paths

把/path/to/your/large/file换成你实际的大文件路径就行。
3. 最后强制推送到远程仓库(注意:这个操作会覆盖远程的历史记录,如果有其他协作者,一定要提前和他们沟通!):

git push origin --force

后续预防

  • 把这个大文件的路径添加到.gitignore里,避免以后不小心再次提交:
echo "/path/to/your/large/file" >> .gitignore
git add .gitignore
git commit -m "Add large file to gitignore"
git push origin main
  • 以后提交前可以用git status或者git diff --cached检查一下要提交的文件,避免误加大文件。

内容的提问来源于stack exchange,提问作者Sijia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:29:37