Git中删除历史大文件

gc操作

git gc --force
Counting objects: 48, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (46/46), done.
Writing objects: 100% (48/48), done.
Total 48 (delta 24), reused 0 (delta 0)

数据统计

git count-objects -Hv

文件列表

git rev-list --objects --all|awk '{print $2}'|sort|uniq|grep -v '^$'

删除某个历史文件

git filter-branch --force --prune-empty --tag-name-filter cat --index-filter 'git rm -rf --cached --ignore-unmatch "debug.test"' -- --all
git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
git reflog expire --expire=now --all
git gc --prune=now > /dev/null 2>&1

强制推送

git push -f