git branch-filter来遍历git history tree, 可以永久删除history中的大文件,达到让.git文件瘦身的目的
找出大文件
git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -5
ls -lh .git/objects/pack/
第一行的字母其实相当于文件的id,用以下命令可以找出id 对应的文件名
git rev-list --objects --all | grep 8f10eff91bb6aa2de1f5d096ee2e1687b0eab007
git filter-branch --index-filter 'git rm --cached --ignore-unmatch <your-file-name>'
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git fsck --full --unreachable
git repack -A -d
git gc --aggressive --prune=now
git push --force [remote] master