2013-03-25 144 views
9

我有一個項目,其中有大約12MB的代碼和資產。我一直在使用Git進行跟蹤,並且發現我的.git文件夾現在剛剛超過1.83GB。它由幾個小文件組成,然後只有一個包文件組成大約1.82GB的文件夾。Git倉庫太大

我運行了git gc --aggressivegit gc --prune。它的大小相同。我試過了:

git reflog expire --expire=now --all 
git repack -ad # Remove dangling objects from packfiles 
git prune  # Remove dangling loose objects 

但它仍然是相同的大小。我甚至克隆了它(一次在本地進行強制重新包裝,再次從Git中),但每個仍然是1.83GB。這是正常的嗎?有什麼辦法來減小它的大小,還是我只是開始一個新的回購,複製代碼,並接受我過去的提交將會消失?

+2

「資產」,你的意思是不可壓縮的東西,如圖像等?你一直在編輯這些嗎? [This](http://naleid.com/blog/2012/01/17/finding-and-purging-big-files-from-git-history/)似乎是你想要的,但聲明:我從來沒有做過它,所以克隆你的回購之前搞亂它:p – Amadan 2013-03-25 01:17:37

+5

一般VCS​​評論:二進制文件(圖像/ ZIP ...)通常按原樣存儲每個版本(不像可以通過存儲壓縮(因爲現在大多數二進制格式已經被壓縮)......所以很可能你有很多版本的二進制文件,只需要佔用那麼多的空間(看看你是否可以收集某種類型的每個文件類型統計數量的版本/文件大小) – 2013-03-25 01:17:44

+0

好吧,二進制文件位似乎是一個可能的罪魁禍首。除了將它們添加到我的.gitignore文件之外,是否有任何方法可以從過去的提交中刪除這些文件? – Bryce 2013-03-25 07:59:11

回答

10

好的,這些評論是瞭解問題的根本原因可能是一個很好的開始。雖然我不太瞭解git filter-branch命令,所以我對使用該命令有些謹小慎微。

我遇到了這個工具:http://rtyley.github.com/bfg-repo-cleaner/

它創造了奇蹟。我的回購現在低於10MB。

+7

我是BFG Repo-Cleaner的作者,你的回答讓我非常開心。 – 2013-04-15 14:49:29

+1

謝謝!說真的,這個工具比從網上覆制和粘貼隨機的git hacker簡單得多。 – Bryce 2013-04-16 20:45:41