2010-01-22 246 views
187

我试着寻找一个关于减少仓库大小的好教程,但是没有找到。我如何减少我的回购大小...它大约是10 MB,但Heroku只允许50 MB,并且我没有接近完成开发我的应用程序的地方。减少Git仓库大小

我已经将通常的嫌疑人(日志,供应商,文档等)添加到.gitignore中。尽管我最近只添加了.gitignore。

有什么建议吗?

+1

我刚刚做了,它把它降低到2.2 MB ......非常感谢!虽然这似乎并没有减少回购大小Heroku .. hmm – 2010-01-22 11:16:18

+9

使用--force推它。它会覆盖内容,即使没有改变(没有新的提交等) – 2010-01-22 11:21:59

+1

@MarcinGil - 下面,VonC声明您需要访问服务器来清理远程服务器(如果我正确解析它)。 – jww 2016-06-16 11:34:10

回答

221

git gc --aggressive是强制剪枝过程发生的一种方法(当然是:git gc --aggressive --prune=now)。您也有other commands清理回购。不要忘了,有时候git gc单独可以increase the size of the repo

它也可以在filter-branch之后用于标记一些要从历史记录中删除的目录(具有进一步的空间增益);见here。但这意味着没有人从你的公共回购中撤出。 filter-branch can keep backup refs in .git/refs/original,这样目录也可以清理。

最后,如提到in this commentthis question;清洁引用日志可以帮助:

git reflog expire --all --expire=now 
git gc --prune=now --aggressive 

一个更加完整的,而且可能是危险的,解决方法是to remove unused objects from a git repository

+0

在另一种情况下,请参阅http://stackoverflow.com/questions/1029969/why-is-my-git-repository-so-big – VonC 2010-01-22 11:40:01

+1

注意自我:不要忘记远程分支:http:// stackoverflow。 com/questions/11255802/delete-remove-binary-file-from-git-repository-is-still-large – VonC 2012-06-29 06:26:33

+1

注意自我:不要忘记远程标签 – saiyancoder 2014-10-06 06:27:09

59

感谢您的答复。以下是我所做的:

git gc 
git gc --aggressive 
git prune 

这似乎有伎俩。我从10.5MB开始,现在只有980KB。

+6

'prune'总是由'gc'运行(2周前默认)。 – Cas 2012-10-10 12:21:18

+80

你可以使用'git gc --aggressive --prune = now'直到现在运行所有3个修剪 – rahul286 2012-10-19 18:44:11