如何克隆远程存储库某个分支的特定版本?
我正在使用一个非常大的git树(Linux Kernel,更具体)。 在许多情况下,我需要将内核代码带到网络和文件系统非常有限的机器上。
通常我需要在某个分支上获得某个提交的代码,而不是所有主要历史记录。
所以,经过一些挖掘(例如here,here以及其他地方)我将其缩小到这个范围:
$ 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有一些允许它的东西?
答案 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