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

Git移除大文件后推送GitHub仍失败,文件已不存在如何解决?

解决GitHub推送因历史大文件导致的GH001错误

我太懂你这个糟心的情况了——明明已经把本地和暂存区的.terraform目录删得干干净净,Git状态也显示文件已删除,但一推送还是碰到一模一样的大文件错误。问题的核心很简单:那个超大的文件已经存在于你的Git提交历史里了,GitHub的预接收钩子会检查整个提交历史里的所有文件大小,所以光删当前版本的文件根本没用,必须彻底把它从历史记录里抹掉。

具体解决步骤

1. 安装git filter-repo(推荐工具)

官方现在已经不推荐使用老旧的git filter-branch了,git filter-repo是更安全、更高效的历史改写工具。先确保你的系统安装了它:

  • macOS:用Homebrew安装 brew install git-filter-repo
  • Linux(Debian/Ubuntu):sudo apt-get install git-filter-repo
  • Windows:可以通过Chocolatey安装,或者从官方仓库下载可执行脚本

2. 彻底从历史中移除目标大文件

在仓库根目录执行以下命令,把那个超大文件的完整路径填进去:

git filter-repo --path .terraform/plugins/darwin_amd64/terraform-provider-aws_v1.41.0_x4 --invert-paths

这个命令会遍历所有提交历史,把包含该文件的所有提交都修改一遍,彻底清除这个文件的所有痕迹。

3. 强制推送覆盖远程历史

因为我们修改了本地的提交历史,必须用强制推送来覆盖远程仓库的旧历史:

git push origin master --force

⚠️ 重要提醒:如果这个仓库是多人协作的,一定要提前通知所有队友!让他们不要再基于旧的历史提交代码,否则后续合并会出现严重冲突。他们需要重新拉取更新后的仓库,或者用git pull --rebase来同步新的历史。

4. 后续预防

为了避免以后再踩这个坑,赶紧在仓库根目录创建(或修改).gitignore文件,把.terraform/目录加入忽略列表:

.terraform/

这样Git就会自动忽略这个目录里的所有文件,再也不会把它们加入版本控制了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:54:38