標籤:

如何控制git庫的膨脹?

作為版本配置管理員,目前項目從svn遷移到git上大概四個月時間,因為經常性的有二進位文件合入,導致git庫迅速從2G體積膨脹到8G,在遠端庫其實還好,關鍵造成了兩個問題。

1各個貢獻者克隆新代碼時間變長。

2持續集成伺服器上存儲耗盡。

求助,如何有效的減小git庫體積,或者有沒有辦法只更新工作區,而不在.git中保留整個庫的歷史。


提問者說repo持續增大的原因是不斷有二進位文件commit進去,而這些二進位文件是參與構建的lib。

git是一個SCM工具——source configuration management,正確的使用方法是只存放source(源碼),不存放artifact(製成品)。只存放source的話,git repo一般大不到哪裡去。

那麼構建過程中需要依賴的lib放在哪裡呢?放在artifact repository(倉庫)里。這需要構建系統/依賴管理系統的配合,如果是Java開發,maven/ivy/gradle都支持從repository中下載依賴的lib,以及將編譯生成的artifact發布到repository去。其他的編程語言基本上也有類似的工具。


http://blogs.atlassian.com/2014/05/handle-big-repositories-git/


二進位如果硬要 check-in 的話用 git-lfs 拓展。這個東西可以自己搭。

這應該是最不影響目前操作習慣的方法……


把cmo的工作交給別人


git gc --auto //git垃圾回收


嘗試使用.gitignore文件。


推薦閱讀:

如何在 GitHub 下載某個程序的特定版本(代碼)?
gitlab 與walle配合搭建,無法檢測,請教一下這個是什麼原因?
Git如何在本地查看遠端倉庫超前本地提交的日誌信息?僅僅是日誌信息哦
關於git cherry-pick的問題?

TAG:Git |