method1

  1. git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -10
  2. 获得10条最大文件记录
  3. git rev-list --objects --all | grep 0ba0cda99a36fe6dc019309665e7a9cf733ab24f
  4. 从记录id获取文件名
  5. git log --pretty=oneline --branches -- "Comic spiderv1.0.zip"
  6. git filter-branch --index-filter 'git rm --cached --ignore-unmatch "Comic spiderv1.0.zip"' -- --all
  7. 确保每条线删指定文件,这里坑点是文件名有空格,需要双引号包围
  8. rm -Rf .git/refs/original
  9. rm -Rf .git/logs/
  10. git gc
  11. git prune 一顿操作猛如虎,就靠这4条确切删后续
  12. git push --force 强制推 jasoneri SU****
  13. du -h --max-depth=1 查看树大小

bug solve

  1. Cannot rewrite branches: You have unstaged changes
  2. git stash

method (remote)

  1. git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"
  2. git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch 你的大文件名' --prune-empty --tag-name-filter cat -- --all
  3. rm -rf .git/refs/original/
  4. git reflog expire --expire=now --all
  5. git gc --prune=now
  6. git gc --aggressive --prune=now
  7. git push origin master --force
  8. git remote prune origin