在git中存储大文件而不进行复制

时间:2017-09-05 22:41:20

标签: git git-lfs

我正在寻找一种在git中有效存储大文件而无需多个本地副本的方法。

我已经尝试过git lfs,但是它会在每次提交时在每个修改过的文件的.git/lfs/objects/中创建一个副本。这意味着我需要至少两倍的磁盘空间(如果我经常使用git lfs prune)。

我知道这是为了保持git工作流程,但我的数据是数百GB,这实际上并不可用。

1 个答案:

答案 0 :(得分:0)

Git专为存储可随时间版本化的文本文件而设计和优化。因此,在处理大型二进制文件时,它在历史上相当短暂。虽然git LFS是将大型二进制文件的存储集成到git工作流程中的一种很好的方法,但它仍然不是git的设计目的。

根据LFS的实现方式,保留大文件的本地副本是不可避免的。从根本上说,它只是一种将git直接连接到二进制文件存档的机制。

如果您处理数百GB的二进制文件,git可能不是满足您需求的正确工具。 (好吧,也许是你项目中存储的任何文本文件。)但是你可能试图将一个方形钉子撞到一个圆孔中。

正如我的建筑师伙伴所说,“当你拥有的只是一把锤子时,一切都开始像螺丝一样。”

我几乎只使用源代码处理,所以除了查看为媒体工件设计的文档管理系统外,我无法提出具体的建议。

如果您确定要坚持使用git,您可以构建一个类似于包管理器的机制,使用您可以存储在repo中的配置和脚本,根据需要下拉所需的工件。