Git 获取/拉取超大存储库的一部分?

Git 获取/拉取超大存储库的一部分?,git,Git,这可能是显而易见的,以前曾以不同的方式被问过很多次,但在搜索了一段时间后,我一直无法找到答案 假设如下: 比如说,我在本地端有一个500GB的磁盘 我有一个100 TB的远程存储库;因此,克隆整个存储库的成本根本不可行 用于创建远程存储库的工作目录由1000个顶级目录DIR001、DIR002、。。。DIR00N每个包含多个子目录,且文件仅位于叶子目录下(例如,DIR001/subdir1/fileA1…DIR001/subf1/fileAN和DIR001/subdir2/fileB1…DIR

这可能是显而易见的,以前曾以不同的方式被问过很多次,但在搜索了一段时间后,我一直无法找到答案

假设如下:

  • 比如说,我在本地端有一个500GB的磁盘
  • 我有一个100 TB的远程存储库;因此,克隆整个存储库的成本根本不可行
  • 用于创建远程存储库的工作目录由1000个顶级目录DIR001、DIR002、。。。DIR00N每个包含多个子目录,且文件仅位于叶子目录下(例如,DIR001/subdir1/fileA1…DIR001/subf1/fileAN和DIR001/subdir2/fileB1…DIR001/subdir2/fileBN
  • 我没有明确地标记或分支目录DIR001、DIR002、…DIR00N或任何其他相关内容
  • 我创建了一个全新的本地git存储库
我如何有效地从远程存储库中提取或获取最后提交的版本,例如DIR001/subdir2/fileB1…DIR001/subdir2/fileBN,而不是其他版本

只有来自远程存储库的DIR001/subdir2/fileB1…DIR001/subdir2/fileBN的单个文件的最后提交版本,其他什么都没有

如何有效地提取或获取所述文件子集的先前提交版本,而不是其他版本

可能fetch/pull不是正确的命令。

对“”的回答可以帮助您开始尝试浅层克隆。
但这将是有限的:

  • 一定深度和/或一定分支
  • 但不适用于某些文件或目录(您可以通过稀疏签出获得文件或目录,但您仍然必须首先获得完整的repo!)
  • 即使是某项承诺。
    (Git 2.5(2015年第2季度)支持单个获取提交!请参阅“”)
但真正的解决方案是将庞大的远程回购分离成子模块。
参见或以说明这种情况


2015年4月更新:

将使拉/取更高效(GitHub,2015年4月)

该项目正在运行(请参见),并使用支持它的服务器进行测试::
您只能将元数据存储在git repo中,而将大文件存储在其他位置


很抱歉,我无法回答您的问题,但请注意,StackOverflow上的签名和标语“强烈反对”。您可以在此处找到更多信息:注意:使用git lfs(2015年4月),拉/取将更有效。请参阅我编辑的答案。git 2.5(2015年第2季度)支持单个提取提交!我已在下面编辑了我的答案,现在引用“”。