- 查找大文件,显示最大的10(tail -n)个文件路径:
$ git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -10 | awk '{print$1}')"
87e5a0f0af4874b9b9e13cd6ad94cc03e55907b8 logs/checkpoint-785.pth
- 删除指定的大文件
$ git filter-branch --force --index-filter "git rm -rf --cached --ignore-unmatch logs/checkpoint-785.pth" --prune-empty --tag-name-filter cat -- --all
- 删除缓存
$ git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
$ git reflog expire --expire=now --all
- 垃圾回收
$ git gc --prune=now
- 查看清理后的项目大小
$ du -sh .git
命令详细解释清参考: https://www.jianshu.com/p/7ace3767986a.