2013-03-28 83 views
4

我意外地在git目錄中添加並提交了一些非常大的(100MB +)PSD文件。當他們在目錄中時,我對這些文件進行了一系列編輯,但後來他們意識到他們不應該在那裏並將它們從目錄中刪除。爲什麼我的.git文件很大?

我然後跑:

git add --all && git commit -m "Removed large psds" 

在我的目錄中的文件,現在達不到十幾MB的增加,除了git的文件本身然而,這是700MB +。

這是怎麼回事?它是否保留已刪除的.PSD文件的舊版本?這是否意味着git不會清除刪除文件所獲得的空間?我如何完全忘記這些文件,以便我可以將.git文件大小放回原處?

+2

可能的重複http://stackoverflow.com/questions/1029969/why-is-my-git-repository-so-big –

回答

12

您的.git文件夾非常大,因爲PSD文件仍然存在於存儲庫中。要刪除它們,您需要使用git filter-branch修改歷史記錄。 Here說明如何使用此命令。之後,您需要清理存儲庫。

我創建了一個腳本來幫助這項工作。如果你想使用它,你可以從github下載它。歡迎任何評論。

+0

謝謝,這似乎確實是正確的方向。現在看看它.. – Yarin

+1

如果它只是一個單一的,最近的提交,'git rebase'可能會更簡單的使用。 – vonbrand

0

您要使用的BFG Repo-Cleaner,更快,更簡單git-filter-branch替代設計用於從Git的回購刪除大文件

下載BFG jar(需要Java 6或以上),並運行此命令:

$ java -jar bfg.jar --strip-blobs-bigger-than 10MB my-repo.git 

大小超過10MB的任何文件(不在你最新提交)將從您的Git中移除資料庫的歷史。然後,您可以使用git gc清理掉死數據:

$ git gc --prune=now --aggressive 

的BFG通常10-50x比運行git-filter-branch更快的選項都圍繞這兩個常見的用例定製:

  • 刪除瘋狂大文件
  • 刪除密碼,證書 &其他私人數據

完全披露:我是BFG Repo-Cleaner的作者。