在我們試圖引入Git的組織中,我們現在有一個關於二進制文件的Git行爲的問題。
我們的項目將包含二進制和文本類型文件的良好組合,典型大小可能爲1 GB。我們擔心的是,幾年後,完整的克隆將變得太大,並導致性能和磁盤空間問題。
遷移到Git的環境之一是其SW目前位於名爲TCM的系統上。版本爲7至10年的存儲庫的總大小爲2 TB。
ClearCase上的另一個環境大約有7 - 8年的數據大約1 TB。
由於Git沒有存儲在特別影響二進制文件的deltas中,5年以上的情況正在引起用戶的關注。
淺克隆功能本來是理想的。但文件說這個「淺層存儲庫有一些限制(你不能從中克隆或取出,也不能從中推入或推入),但如果你只關心一個長期大項目的最近歷史歷史,並希望將補丁發送給補丁。「對淺層克隆進行粗略的檢查會發現它工作正常,但是肯定有已知的用例,它不會工作,因此文檔
是否有已知的使用情況列表,這種情況不適用?什麼是淺克隆的限制
5
A
回答
3
我強烈建議您將二進制文件存儲在專用存儲庫中,易於擴展並易於清理:像Nexus這樣的工件回購。
在「How to handle a large git repository?」中有其他選擇。
試圖把一切都在Git的,在某些不自然的方式使用它,總是會導致更多的麻煩是值得的:它是一個源控制工具。你不妨將它用於它的好處。
這就是說,淺層克隆不支持推送(或者,至少,它是危險的:請參閱「Why can't I push from a shallow clone?」)。
對於只讀目的,簡單的git archive
就足夠了,如「not understanding git shallow clone」中所述。
更新2015年:
- 實際上,你現在可以使用淺克隆推/拉,請參閱 「Is
git clone --depth 1
(shallow clone) more useful than it makes out?」 - 你可以(在GIT 2.5+)即使取單個提交。請參閱「Pull a specific commit from a remote git repository」。
1
Git Annex相當漂亮地解決了「big-binary-files in/near git」問題。
相關問題
- 1. 什麼是'線程限制'克隆?
- 2. 淺克隆之後淺拉
- 3. 淺取和淺克隆
- 4. 淺克隆與JGIT
- 5. .slice()是一個「淺層克隆」是什麼意思?
- 6. 淺層克隆中的「嫁接」提交到底是什麼?
- 7. GIT - 使克隆變淺
- 8. 爲什麼這個git淺克隆比我預期的更大?
- 9. jQuery的克隆限制
- 10. 深層和淺層克隆有什麼區別?
- 11. 的Git找到一個淺克隆
- 12. git淺克隆到特定的標記
- 13. 刪除淺克隆中的分支
- 14. 周圍缺乏淺克隆的方式
- 15. ArrayList的淺拷貝迭代或克隆()
- 16. 如何在java中進行淺層克隆和深度克隆?
- 17. 將淺克隆轉換爲完整克隆
- 18. 將git完整克隆轉換爲淺克隆
- 19. 什麼時候Perl 6數組克隆不是克隆?
- 20. 什麼是克隆對象的instanceof?
- 21. 什麼是克隆的實際用法
- 22. git淺克隆以及分支
- 23. 本地淺git克隆與硬鏈接
- 24. GitHub Enterprise支持淺層克隆嗎?
- 25. 錯誤克隆混帳「淺」庫
- 26. 稀疏結帳和淺層克隆
- 27. 複製和克隆有什麼區別?
- 28. git克隆淺但提取更改非淺?
- 29. 鼠標拖動克隆無限克隆
- 30. 克隆/複製knockoutJS中的observablearray的最佳方式是什麼?
更新:自git V1.9以來,淺層克隆的大多數侷限性都已解決。 – sleske
Git 2.5(Q2 2015)支持單個提取提交!我在下面編輯了我的答案,現在引用「[從遠程git存儲庫中提取特定提交](http://stackoverflow.com/a/30701724/6309)」。 – VonC
VTC不清楚。文檔給出了它不能做什麼的完整摘要。一個「用例列表」就是你可以想象到的那些使用這些操作的東西。這是一個無限的集合,因此不可能做出答案。 –