因为我使用 git 将我的博客站点代码上传到云服务器,然后在使用过程中就不可避免地要删除一些不必要的文件,造成.git文件太大,甚至比其他文件都大,每次 push 时间都慢慢变长,就想着能不能删掉一些东西,在知乎找到一个合适的回答,实操了一下,非常有用。
打开 git bash ,我也试过 Windows Terminal,应该是语法不兼容,有些命令敲不出来。。。
运行 gc
,生成 pack
文件,后面的 --prune=now
表示对之前的所有提交做修建,有时候 gc
一下文件就会小很多
$ git gc --prune=now
$ git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -3
$ git rev-list --objects --all | grep 346a3a2
$ git filter-branch --force --index-filter "git rm --cached --ignore-unmatch 'static/images/2021-03.jpg'" --prune-empty --tag-name-filter cat -- --all
repack
$ git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
$ git reflog expire --expire=now --all
$ git gc --prune=now
pack
的空间使用情况$ git count-objects -v
对比一下体积应该会减少一些。