通过下面命令可以得到已经排序的文件大小:
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
Mac 系统没有 numfmt,要么自己安装,要么删除上面命令最后一行。
- 需要 Java8 以上的运行环境(JRE),下载安装 java JRE。
- 备份好仓库,然后通过 --mirror clone 你的仓库,例如
git clone --mirror git://example.com/some-big-repo.git
。 - 下载 bfg-repo-cleaner,然后把文件移动到仓库中。
接下来我要删除 node_modules.zip
文件:
java -jar bfg-1.14.0.jar -D "node_modules.zip"
等待命令执行完成,按照提示输入:
git reflog expire --expire=now --all && git gc --prune=now --aggressive
git push
然后通知其他人,删除本地仓库,重新拉取。