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

已将cache目录加入.gitignore,Git仍尝试推送该目录的原因

解决Git推送时已忽略目录仍报大文件超限问题

问题根源

你当前分支的历史提交记录里还保留着cache目录下的大文件。git rm -r --cached cache只是让Git停止追踪当前工作区的cache目录,但历史提交中的这些文件并没有被移除,推送时GitHub会检查所有待推送的提交内容,所以依然触发文件大小限制。

解决步骤

1. 彻底清除历史中的cache目录痕迹

推荐使用官方推荐的git filter-repo工具(比旧的git filter-branch更安全高效),执行命令移除所有历史提交里的cache目录:

git filter-repo --path cache --invert-paths

如果你的环境没有安装git-filter-repo,可以通过对应包管理器安装,比如:

  • macOS:brew install git-filter-repo
  • Linux:sudo apt install git-filter-repo

2. 强制推送修改后的历史

因为修改了提交历史,需要强制覆盖远程分支的内容:

git push --force origin <你的分支名称>

⚠️ 注意:如果是多人协作的分支,强制推送会覆盖远程历史,务必提前和团队成员沟通确认。

3. 验证修复结果

再次检查本地分支的文件列表:

git ls-tree --name-only <你的分支名称>

确认cache目录不在输出结果中,之后重新推送即可解决大文件超限问题。

备选应急方案(不推荐)

如果无法使用git filter-repo,可以用已被官方标记为过时的git filter-branch命令:

git filter-branch --tree-filter 'rm -rf cache' HEAD

执行完成后同样需要执行强制推送命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 03:27:09