git项目大小优化笔记,删除历史提交中的大文件

2023-05-15  本文已影响0人  Joyner2018

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的方式重新拉取代码再做修改提交。

上一篇下一篇

猜你喜欢

热点阅读