我當前項目的git倉庫,包含源代碼和圖像文件,大小爲1.2千兆字節。但所有分支的實際文件大小隻有大約205兆字節。如何在不丟失源代碼文件歷史的情況下減少資源庫大小?
我是git的初學者,我猜想巨大的存儲庫大小是由在存儲庫中移動圖像文件引起的。由於git沒有捕獲移動的文件,因此它將圖像存儲在歷史記錄的舊位置以及圖像位於其新位置。我不確定這是否會造成如此大的開銷。
無論如何,我怎樣才能減少庫大小,而不會丟失源代碼文件的歷史?我可以放棄圖像文件的歷史。
我當前項目的git倉庫,包含源代碼和圖像文件,大小爲1.2千兆字節。但所有分支的實際文件大小隻有大約205兆字節。如何在不丟失源代碼文件歷史的情況下減少資源庫大小?
我是git的初學者,我猜想巨大的存儲庫大小是由在存儲庫中移動圖像文件引起的。由於git沒有捕獲移動的文件,因此它將圖像存儲在歷史記錄的舊位置以及圖像位於其新位置。我不確定這是否會造成如此大的開銷。
無論如何,我怎樣才能減少庫大小,而不會丟失源代碼文件的歷史?我可以放棄圖像文件的歷史。
Git不會存儲移動或複製文件的額外副本。如果內容相同,那麼git存儲的唯一東西就是新的樹結構。在Git的對象模型
詳情:http://git-scm.com/book/en/Git-Internals-Git-Objects
git gc
是做一個資料庫定期內務管理的常見方式,給它一個鏡頭,看看你的資料庫收縮。
如果不這樣做(有時git gc
會窒息,特別是在有大量二進制數據的存儲庫),請嘗試使用git repack
。它通常需要一段時間,但如果可能的話,它應該縮小存儲庫。試試這個:
git repack -adf --window=250 --depth=250 --window-memory=1024M
注意--window-memory
選項;如果你的機器有足夠的內存,你可能會不使用這個選項,但如果沒有,它應該防止git repack
內存不足。根據我的經驗,將其設置爲可用內存的一半或更少通常工作正常。
'git gc'命令至少釋放了400兆字節。使用另外一個命令,我用'2048M'或'1024M'內存不足,但是我的機器上安裝了4GB的ram。沒有其他資源關鍵任務正在運行。你有什麼主意嗎? – danijar
看來'git gc'有很好的效果。也許'git repack'不會好得多。但是你可以嘗試試驗這些值並看看。降低'--window-memory'甚至更多;如果仍然失敗,請嘗試降低其他選項。 – jsageryd
你是對的,有情人「窗口」和「深度」值,但它沒有明顯的收益。 – danijar