github push失败,删除git历史中的大文件
转移repo的时候,直接push会报错文件大小受到限制,但是这个文件只存在于commit history, 并不在实际文件中。解决步骤如下。
- 使用如下的命令找出history的大文件.
https://stackoverflow.com/questions/10622179/how-to-find-identify-large-commits-in-git-history
1 2 3 4 5 6
| git rev-list --objects --all | git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | sed -n 's/^blob //p' | sort --numeric-sort --key=2 | cut -c 1-12,41- | $(command -v gnumfmt || echo numfmt) --field=2 --to=iec-i --suffix=B --padding=7 --round=nearest
|
- 使用bfg -D <文件名>, 直接删除。
https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository
- 清理缓存。
1
| git reflog expire --expire-now --all && git gc --prune-now --aggressive
|
- 强制推上Github。