一、查看哪些历史提交过文件占用空间较大
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