git 库中删除大文件

git pull如果花太长时间,就说明git库需要清理了。清理时,只需要在本地操作即可。

首先可以用

$ git count-objects -v

来查看库文件的大小。

然后使用命令

git verify-pack -v .git/objects/pack/pack-8eaeb...9e.idx 
       | sort -k 3 -n | tail -3

来识别出大对象。最下面一个为最大的对象。

git rev-list --objects --all | grep hashid

以上命令可列出文件的名字。假定文件名为big-file.jar。用以下命令删除它

git filter-branch --force --index-filter 'git rm -rf --cached 
  --ignore-unmatch big-file.jar' --prune-empty --tag-name-filter 
  cat -- --all

重写成功后,推送修改后的repo

git push origin master --force

最后清理和回收空间,命令如下:

rm -rf .git/refs/original/

git reflog expire --expire=now --all

git gc --prune=now

至此,该文件已经被删除。

列出文件参考的是第一篇文章,删除部分是参考的第二篇文章。

参考文章:

  1. http://blog.csdn.net/zcf1002797280/article/details/50723783
  2. http://www.hollischuang.com/archives/1708


本文地址: http://www.bagualu.net/wordpress/archives/6751 转载请注明




发表评论

电子邮件地址不会被公开。 必填项已用*标注