在Git历史记录中删除大文件

写在前面

删除git历史文件能够有效减小git仓库尺寸,但是一定注意:删除历史记录也会导致当前目录文件丢失,请做好备份!!!
如果不小心在git中提交了大文件,可以在历史记录中彻底删除,然后使用Git LFS存放大文件。

三步搞定

反复执行以下三步即可,直到查询出的文件无需删除。

  1. 找到历史记录中最大文件路径
  2. 在历史记录中删除
  3. 删除该文件的引用

找到历史记录中最大文件路径

git rev-list --objects --all |grep $(git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -1|awk '{print $1}')

复制打印出的文件路径,别称PATH

在历史记录中删除

git filter-branch --index-filter 'git rm --cached --ignore-unmatch PATH' -- --all

替换以上PATH

删除该文件的引用

rm -Rf .git/refs/original
rm -Rf .git/logs/
git gc
git prune

拓展一下

以下命令查看pack文件包的相关详细信息,通过文件大小进行排序,这里只列出5个最大的文件哈希

git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -5

以下命令列出某条记录对应的文件名等详细信息

git rev-list --objects --all | grep 777e8697e5dc1017ca901c8cf226d707b6e96b06
posted @   半塘加冰  阅读(168)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10亿数据,如何做迁移?
· 推荐几款开源且免费的 .NET MAUI 组件库
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 易语言 —— 开山篇
· Trae初体验
点击右上角即可分享
微信分享提示