我正在尋找一種方法來高效地在git中存儲大文件,而無需使用多個本地副本。在git中存儲大文件而不復制
我試過git lfs,但是它在每個提交的每個修改文件中創建了一個.git/lfs/objects/
副本。這意味着我需要至少兩倍的磁盤空間(如果我經常使用git lfs prune
)。
據我所知,這是爲了保持git工作流程,但我的數據是在數百個GB中,這並不是真的可用。
我正在尋找一種方法來高效地在git中存儲大文件,而無需使用多個本地副本。在git中存儲大文件而不復制
我試過git lfs,但是它在每個提交的每個修改文件中創建了一個.git/lfs/objects/
副本。這意味着我需要至少兩倍的磁盤空間(如果我經常使用git lfs prune
)。
據我所知,這是爲了保持git工作流程,但我的數據是在數百個GB中,這並不是真的可用。
Git的設計和優化用於存儲可隨時間變化版本的文本文件。正因爲如此,在處理大型二進制文件時,它歷來會出現相當短的時間。雖然git LFS是將大型二進制文件的存儲集成到git工作流中的好方法,但它仍不是git的設計目的。
由於如何實現LFS的本質,保持大文件的本地副本是不可避免的。從根本上講,它只是將git直接連接到二進制文件存檔的機制。
如果你在處理數百GB的二進制文件,git可能不是你需要的正確工具。 (好吧,也許對於存儲在你的項目中的任何文本文件。)但是你可能試圖將一個方形的釘子撞到一個圓孔中。
正如我的建築師朋友所說:「當你擁有的只有一把錘子時,所有東西看起來都像是螺絲釘。」
我幾乎完全處理源代碼,所以除了檢查爲媒體工件設計的文檔管理系統之外,我無法真正做出具體的建議。
如果您確定要堅持使用git,您可以構建一個類似於軟件包管理器的機制,根據需要使用可存儲在回購站中的配置和腳本來下拉需要的工件。
我腦海中的想法是隻存儲版本信息以及如何檢索回購庫中的文件(如git lfs),但忽略git工作流並使用單獨的命令檢索/上傳二進制文件。這不是很方便,但在某些情況下似乎很有用,我很驚訝我找不到這樣的工具,這就是爲什麼我發佈我的問題 – nikidimi
這基本上是有多少人在git-lfs之前處理過這個問題。有許多工具可以按照您設想的方式工作,但它們旨在用於管理軟件包(maven,nuget,npm等)或構建工件(Artifactory,Archiva,Nexus等)。你能告訴我們你正在使用什麼類型的數據嗎?它可能有助於我們提供指導。 – LightBender
是的,我的研究發現了Artifactory/Nexus以及套餐管理系統的課程。我的數據是巨大的文本文件(大部分是用gzip壓縮),包含基因序列變異。格式通常是VCF(https://en.wikipedia.org/wiki/Variant_Call_Format)或非常相似。 – nikidimi