Git:一个特定提交的浅拷贝



git clone --depth N ...创建了一个浅层克隆,其历史记录仅限于最后N个修订版,我可以使用git clone -b tag ...tag获取可访问的提交。但是,有没有一种方法可以从特定的(标记的)提交到分支头获取存储库(或其分支)?

例如,我只想克隆从特定发布标签开始的历史记录。因此,如果远程中的最后几次提交看起来像这个

[master]   ...
[master~1] ...
[master~2] ... <-- tag: x.x
[master~3] ...
...

现在,我想克隆历史记录范围x.x~1..,而不必手动计算给--depth的修订数量。

我想在公认的答案中给出的解释是;是否有特定于Git克隆的提交选项?这里也适用,所以可能没有直接的方法。

事实上,没有直接的方法,这种计数或基于多个ref的克隆必须在服务器端(提供初始浅层克隆的服务器)实现,才能在git的约束下工作。

不过,还有一种间接的方法:从深度1浅克隆开始,然后重复深化,直到出现标记。令人烦恼的是,git fetch --depth=<N>不会拾取新标签(但您可以使用git ls-remote或类似的方法在浅层克隆客户端上一次性获取所有内容,并注意SHA-1)。但我怀疑这种方法会太慢,以至于变得毫无价值。

如果在客户端和服务器端都至少运行Git 2.11,那么如果您知道标记提交的日期和它在哪个分支上,就可以解决问题:

git clone --branch <branch that contains tag> --shallow-since=<date of tagged commit> <url>

相关内容

  • 没有找到相关文章