请在Chrome、Firefox、IE8+等现代浏览器浏览本站。 本博客所有文章为原创,图片不加水印,随意转载,但请注明来源,谢谢!

git filter-branch 删除历史commit里的内容后,真正精简.git文件大小的办法。

随笔 kxjhwbb 158℃ 0评论

博主在利用git迁移网站过程中把附近全加了进去,git大小暴涨几百M,以后clone都要带着几百M很是难受。

但git已经commit了不少版本,几百M文件的commit夹在中间。

于是寻找方法去除,最后结合国内外网友(关键还是国外)文章,顺利解决。

过程中遇到的最大问题就是,文件确实从commit中去除了,但.git的目录大小并未发生变化。。

 

从所有commit中去除掉一个文件的方法:

 

清理git的占用空间,网上很多网友照搬照抄,大致方法是:

 

你会发现实际上du -sh .git并没有减少大小!

 

真正清理git占用空间的方法

先去掉remote,我个人git也了解的很浅,感觉之所以文件清不掉,可能是因为还有一些引用存在:

最后一句是关键,是否感受到了来自git的嘲讽?

这么操作之后我的.git终于变回了15M。

 

另外一个简单的办法

再建一个远程仓库,把第一步删掉文件之后的库往上push,然后删掉本地库,重新clone一遍下来,.git目录就变小啦~  曲线实现。。

 

参考

https://stackoverflow.com/questions/8740187/git-how-to-remove-file-from-historical-commit

https://stackoverflow.com/questions/1904860/how-to-remove-unreferenced-blobs-from-my-git-repo

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址