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

删除超100MB的7z文件后仍无法推送到GitHub的求助

解决GitHub推送因历史大文件失败的方法

核心原因

你删除了本地文件,但该大文件仍存在于Git的提交历史中,GitHub的大文件检测会扫描整个历史记录,所以即使当前工作区没有该文件,推送还是会失败。

具体解决步骤

1. 定位历史中的大文件

先确认这个大文件在哪些提交里出现过,执行:

git log --all --full-history -- "example_mods\vs-bloodiey\sourcefiles\assets.7z"

这会列出所有包含该文件的提交记录,可记下对应的提交哈希值备用。

2. 彻底清除历史中的大文件

使用git filter-repo(比旧的filter-branch更安全高效,Git 2.22+版本默认包含)移除历史中的目标大文件:

git filter-repo --path example_mods/vs-bloodiey/sourcefiles/assets.7z --invert-paths

注意路径统一用斜杠/,Windows环境也兼容。

3. 强制推送到远程仓库

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

git push origin main --force

⚠️ 注意:如果有其他协作者在该分支工作,提前告知他们,强制推送会覆盖远程历史,他们需要重新拉取并处理本地分支。

备选方案(无git filter-repo时)

如果你的Git版本未包含filter-repo,可以用BFG Repo-Cleaner工具:

  • 下载BFG工具后,执行:
java -jar bfg.jar --delete-files assets.7z
  • 清理Git残留垃圾:
git reflog expire --expire=now --all && git gc --prune=now --aggressive
  • 最后同样执行强制推送命令。

验证清理结果

执行完操作后,检查本地历史是否已移除该文件:

git log --all --full-history -- "example_mods\vs-bloodiey\sourcefiles\assets.7z"

如果没有输出,说明历史已清理完成,可再次尝试推送。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:54:50