Git浅克隆特定版本的远程存储库

时间:2017-06-27 00:58:05

标签: git git-clone git-checkout git-reset

如何克隆远程存储库某个分支的特定版本?

我正在使用一个非常大的git树(Linux Kernel,更具体)。 在许多情况下,我需要将内核代码带到网络和文件系统非常有限的机器上。

通常我需要在某个分支上获得某个提交的代码,而不是所有主要历史记录。

所以,经过一些挖掘(例如herehere以及其他地方)我将其缩小到这个范围:

$ git clone --branch <remote-branch-name> --single-branch --depth 20 http://some-host:8080/some-git-repo.git
$ cd some-git-repo
$ git reset --hard <commit-ID-that-I-need>

优点:我正在克隆我需要的唯一分支,并克隆了非常有限的历史记录。

缺点:在克隆之前,我需要实际找出哪个分支具有我需要的提交ID,并且还需要估计分支提示的提交距离并使用此number作为“深度”参数(我在示例中使用了20)。

所以我的问题是:如何直接克隆远程存储库某个分支的特定版本,没有上述缺点?

我发现答案说它无法完成,但它们过时了。 也许一个新的git有一些允许它的东西?

1 个答案:

答案 0 :(得分:1)

除非服务器具有特定的设置,否则似乎不可能。

uploadpack.allowReachableSHA1InWant

请参阅我为Git 2.5及更多内容提及的“Retrieve specific commit from a remote Git repository”。

git fetch --depth=1 ../testrepo/.git $SHA1
git cat-file commit $SHA1