由于项目中每次都会提交上去jar包,导致仓库体积越来越大,删除掉历史的没用的文件
经过删除,仓库由 3.3G 变为 1.1G
查看占用
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
按占用大小排序,可以看到jar的commit SHA值,然后我们要查找调用target/demo-1.1.1.jar的提交记录
查找提交记录
git log --pretty=oneline --branches -- target/demo-1.1.1.jar
比如我们要删除上线之后所有的提交记录,那么就需要找到上线的SHA值前几位,输入以下
git filter-branch --index-filter 'git rm --cached --ignore-unmatch target/demo-1.1.1.jar' -- 0292b33df8abb217^..
执行过程:
删除ref中的引用
rm -Rf .git/refs/original
rm -Rf .git/logs/
执行gc回收
git gc
强制推送至远程
git push --force
到此远端及本地的仓库已瘦身完成,还需要所有该项目的开发人员重新clone一下仓库,避免将历史commit文件重新提交到远程
参考文章
https://cloud.tencent.com/developer/article/1798408
https://www.cnblogs.com/fuhua/p/15527023.html