这个问题困扰许久,一直懒得去解决。直到我在一个新项目中疏忽将一个150M的压缩包给放入项目中并推送到远程分支上才后悔莫及(这还是在另外一台电脑上下载的时候同步发现特别慢才意识到)。
经过一番研究,发现两种途径解决。
- 通过git命令,将git数据中较大的blob删除。过程较为复杂,且文件关联复杂,无法直观了解。
- 使用一个叫BFG-Repo Cleaner的工具进行删除。
git clone --mirror git://example.com/some-big-repo.git
java -jar bfg.jar --strip-blobs-bigger-than 100M some-big-repo.git
cd some-big-repo.git
git reflog expire --expire=now --all && git gc --prune=now --aggressive
git push
其实只需要1M以上都不太可能是代码文件了,所以我设置大于1M就都删除
最后再克隆一下看下效果,从原先的150M变为1.84M