Git清理瘦身

1
git gc --prune=now

找出最大的三个文件

1
git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -3

查看大文件

1
git rev-list --objects --all | grep c43a8da

移除对大文件的引用

1
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch 'data/bigfile'"  --prune-empty --tag-name-filter cat -- --all

repack

1
git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
2
git reflog expire --expire=now --all
3
git gc --prune=now

查看pack的空间使用情况

1
git count-objects -v

如果不止一个人使用仓库,需要其他成员删除本地库并重新 clone 远端的库,同时以上操作后不应有其他人 push 到远端,否则白忙活


参考资料: