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

Git追踪不存在文件,推送GitHub遇大文件超限及删除失败求助

解决GitHub推送大文件失败+git rm找不到文件的问题

问题根源

那些超大文件已经被提交到本地Git仓库的历史记录里了,直接用git rm --cached只能移除暂存区的文件记录,碰不到历史里的内容,所以推送时GitHub还是会检测到这些大文件;而找不到文件的提示,大概率是因为文件已经不在当前工作区,但历史里还存在。

解决方案

方法1:用git filter-repo彻底清理历史中的大文件(推荐)

这个工具比旧的git filter-branch更安全高效,是官方推荐的清理历史的方式:

  1. 先确保安装了git filter-repo(可通过包管理器安装,比如Mac用brew install git-filter-repo,Windows用Chocolatey或者直接从官方渠道获取)
  2. 运行以下命令,把历史里的两个大文件彻底删掉:
git filter-repo --path WebApi/.local-chromium/Win64-884014/chrome-win/chrome.dll --invert-paths
git filter-repo --path WebApi/.local-chromium/Win64-884014/chrome-win/interactive_ui_tests.exe --invert-paths
  1. 把这些大文件的路径加入.gitignore,防止以后再误提交(直接忽略整个目录更省心):
    打开.gitignore文件,添加一行:
WebApi/.local-chromium/
  1. 提交.gitignore的修改:
git add .gitignore
git commit -m "Ignore .local-chromium directory to avoid large files"
  1. 强制推送到远程仓库(注意:这会覆盖远程仓库的历史,如果是多人协作,提前跟队友沟通让他们重新拉取):
git push origin main --force

(如果你的主分支是master,就把main换成master)

方法2:重置到提交大文件之前的版本(适合刚提交不久的情况)

如果大文件是最近一次提交的,直接回退到上一个干净的版本更简单:

  1. 查看提交历史,找到大文件提交之前的那个commit哈希值:
git log --oneline
  1. 重置到该commit(注意:这会清空当前工作区之后的所有修改,确保没有未提交的重要内容再执行):
git reset --hard <你的干净commit哈希>
  1. 把.local-chromium目录加入.gitignore,然后重新提交所有代码:
git add .
git commit -m "Recommit code without large chromium files"
git push origin main

补充说明

  • 这类Chromium本地缓存文件没必要推送到远程仓库,直接忽略是最优选择;如果确实需要推送大文件,可使用Git LFS,但不推荐用于缓存文件。
  • 强制推送后,本地的旧分支历史可以用git gc --prune=now清理,释放磁盘空间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:15:15