清理 git commit 历史中的大文件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaosongluo/article/details/84194792

起因

晚上一到家就听同事说,git仓库拉不下来了,于是VPN上去看了一下:

在这里插入图片描述

哎,肯定是哪位大爷又在作妖了,后悔当初没有设置单文件大小。不过事情已经发生,当务之急肯定是如何解决问题,消除影响。

命令式解决方案

Step 0:查看空间占用

git count-objects -v # 查看 git 相关文件占用的空间
du -sh .git # 查看 .git 文件夹占用磁盘空间

Step 1:找到仓库记录中的大文件

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

Step 2:重写这些大文件涉及到的所有提交

git filter-branch -f --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch {your-file-name}' --tag-name-filter cat -- --all

Step 3:同步远程仓库

git push origin --force --all

工具式解决方案

如果不喜欢敲命令,还有一个工具可用:https://rtyley.github.io/bfg-repo-cleaner/

猜你喜欢

转载自blog.csdn.net/xiaosongluo/article/details/84194792