1.对历史提交文件大小排序
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
2.查看文件是否存在
3.移除commit中某个文件的引用
git filter-branch --force --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch 文件路径/文件名' --tag-name-filter cat -- --all
git filter-branch --force --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch report/app/public/pdf/.' --tag-name-filter cat -- --all
git filter-branch --force --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch report/app/public/font/.' --tag-name-filter cat -- --all
4.删除指向旧提交的指针
rm -rf .git/refs/original/
5.让历史记录全部过期
git reflog expire --expire=now --all
6.重新打包
git repack -A -d
7.对仓库进行gc操作
git gc --aggressive --prune=now
8.强制推送到远程分支
git push --force
9.以为这样就完了?
全部以clone的方式重新拉取代码再做修改提交。
网友评论