如何给git仓库瘦身,删除大文件

git用久后,或者.gitignore设置不好,没有忽略掉大文件(比如:zip,sql,deb,tar.gz… 等二进制文件)。会把git库撑的很大,有几个G。这些大文件有些是没必要放进来的,需要删除掉.下面有解决办法:

进入项目根目录下面(确保是最新文件)。这个git库有6.4G.

1
2
[ jonny@wheezy ~ ]
$ cd project

从所有提交(commit)中删除所有的zip文件(*.zip.其他的请自行修正).

1
2
3
4
[ jonny@wheezy ~ ]
$ git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch *.zip' \
--prune-empty --tag-name-filter cat -- --all

Rewrite 48dc599c80e20527ed902928085e7861e6b3cbe6 (266/266)

Ref ‘refs/heads/master’ was rewritten

清除快取和回收空间。

1
2
3
4
5
[ jonny@wheezy ~ ]
$ rm -rf .git/refs/original/ 
$ git reflog expire --expire=now --all
$ git gc --prune=now
$ git gc --aggressive --prune=now

 

强制覆盖并上传到 remote repository。

1
2
[ jonny@wheezy ~ ]
$ git push origin master --force

 

打完收工!现在就可以看到瘦身的效果了。

1
2
3
[ jonny@wheezy ~ ]
$ du .git -lsh 
126M .

 

坚持原创技术分享,您的支持将鼓励我继续创作!