清理 git commit 历史中的大文件

起因

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

清理 git commit 历史中的大文件_第1张图片

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

命令式解决方案

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/

你可能感兴趣的:(填坑)