2010-01-22 243 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