首先通过rev-list来找到仓库记录中的大文件:
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"
然后通过 filter-branch
来重写这些大文件涉及到的所有提交(重写历史记录):
git filter-branch -f --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch your-file-name' --tag-name-filter cat -- --all
https://harttle.land/2016/03/22/purge-large-files-in-gitrepo.html
生产环境请考虑使用 bfg 等效率工具