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

使用git rm删除大文件后仍被Git追踪,触发GitHub大文件错误求助

问题原因及解决办法

原因

  • Git会完整记录所有提交历史,git rm仅删除当前分支最新版本的目标文件,历史提交记录里仍保留着该大文件的完整数据。推送时Git会扫描所有历史对象并打包上传,因此远程仓库依然能检测到这个超大文件。
  • 错误日志中的.pack文件是Git用于存储历史对象的打包文件,该大文件已被包含在历史打包数据中,普通删除操作无法清除。

解决办法

方法1:精准移除历史中的特定大文件(推荐)

使用官方推荐的git filter-repo工具替代旧的filter-branch,操作更稳定:

  1. 确保已安装git filter-repo(部分新版Git自带,也可通过系统包管理器安装)
  2. 执行命令彻底清除历史中的目标大文件:
git filter-repo --path MRI_augmentation/voxelmorph/previous_git/objects/pack/pack-e1d134b06d29bdb05cafe53b8f74149afa3b5e37.pack --invert-paths
  1. 强制推送更新后的分支到远程:
git push origin try_combine --force

方法2:批量清理所有超大小限制的文件

如果不确定还有其他大文件,可直接清理所有超过100MB的文件:

git filter-repo --strip-blobs-bigger-than 100M

执行完成后同样强制推送:

git push origin try_combine --force

方法3:使用BFG Repo-Cleaner快速清理

BFG是比git filter-repo更快的历史清理工具:

  1. 下载BFG工具后,在仓库根目录执行:
java -jar bfg.jar --strip-blobs-bigger-than 100M .git
  1. 清理本地Git缓存并推送:
git reflog expire --expire=now --all && git gc --prune=now --aggressive
git push origin try_combine --force

注意事项

  • 强制推送会覆盖远程分支的历史记录,若有协作成员,需通知所有人重新拉取分支,避免历史冲突。
  • 后续如需管理大文件,建议使用Git LFS,将大文件纳入LFS追踪,防止再次触发大小限制错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 04:40:35