Why
写公司的一个内部项目,前期没配置好.gitignore导致整个git仓库达到1.1G,查了一上午资料终于解决了,最后仓库大小只有1.1M。
How
-
查看git仓库大小
git count-objects -v
结果
count: 0
size: 0
in-pack: 663
packs: 1
size-pack: 1031
prune-packable: 0
garbage: 0
size-garbage: 0
其中size-pack
就是 git 仓库大小。
-
列出大文件
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -20 | awk '{print$1}')"
其中"tail -20"中的20表示条数。
-
删除大文件
git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch xxx.framework' --prune-empty --tag-name-filter cat -- --all
其中”xxx.framework“是上一步中列出的大文件路径
-
push 到远程
git push origin --force --all
-
清楚缓存
rm -rf .git/refs/original/ git reflog expire --expire=now --all git gc --prune=now
完工。