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

如何彻底删除git本地分支中的文件以解决大文件推送失败问题

问题原因

你执行git rm仅删除了当前工作目录的文件并在最新提交中记录了删除操作,但该超大文件仍存在于本地Git的历史提交记录中,推送时Git会同步所有历史提交的对象,因此仍会检测到超限的大文件。

解决方案

方案1:彻底从Git历史中删除该文件(适合无需保留该文件版本记录的场景)

操作前请确保本地工作区无未提交的变更:

  • 清理所有提交历史中的modules/db.db文件,推荐使用git filter-repo命令(Git 2.22及以上版本推荐):
git filter-repo --invert-paths --path modules/db.db

若使用旧版本Git,可替换为传统filter-branch命令:

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch modules/db.db' --prune-empty --tag-name-filter cat -- --all
  • 清理本地Git缓存与无效历史对象:
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now --aggressive
  • 重新推送至远程仓库:
git push origin master

方案2:保留文件使用Git LFS存储(适合需要持续版本管理该大文件的场景)

  • 初始化Git LFS:
git lfs install
  • 配置LFS追踪该db文件:
git lfs track modules/db.db
  • 提交生成的LFS配置文件:
git add .gitattributes
git commit -m "track db.db via Git LFS"
  • 迁移历史提交中的该文件到LFS存储:
git lfs migrate import --include="modules/db.db"
  • 重新推送至远程仓库:
git push origin master
注意事项

上述两种方案都会重写本地Git提交历史,若该仓库已有其他协作者,操作完成后需通知所有协作者重新克隆仓库,避免推送旧历史导致大文件重新进入提交记录。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 01:36:04