git查找删除大文件


一、查看哪些历史提交过文件占用空间较大

git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"

二、删除大文件

git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch big-file.ipa' --prune-empty --tag-name-filter cat -- --all
// 说明
上面脚本中的big-file.ipa请换成你第一步查出的大文件名,或者这里直接写一个目录。

Cannot rewrite branches: You have unstaged changes

解决方案:执行 :git stash

三、推送修改后的repo

git push origin master --force

四、清理和回收空间

rm -rf .git/refs/original/

git reflog expire --expire=now --all

git gc --prune=now