如何仅克隆Git仓库中的特定标签而不获取整个仓库?

14

我想获取Linux内核2.6.22.19的源代码,以便为我的路由器交叉编译东西,但是仓库非常庞大(3GB),如果我这样做

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git

然后检查那个标签,克隆需要很长时间,我的带宽有限。

如果我运行这个

git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git --branch v2.6.22.19 --single-branch

接收到的文件大小约为150MB,这是否是正确的操作方式?这个命令行是什么意思?v2.6.22.19是一个标签名称,对吗?为什么它可以在--branch之后添加?

克隆之后。

[oglop@localhost linux-stable]$ git status
# Not currently on any branch.

为什么不下载其中一个发布的tar.xz文件呢? - MrTux
因为我在这里找不到2.6.22.19版本?https://www.kernel.org/pub/linux/kernel/v2.6/ - Shuman
2
可能是如何git克隆特定标签的重复问题。 - merlin2011
1
@Shuman:使用git checkout v2.6.22.19将其切换为当前分支。 - unutbu
@unutbu 仍然是一样的。 `[oglop@localhost linux-stable-kernel]$ git checkout v2.6.22.19 HEAD 现在位于 37579d1... Linux 2.6.22.19 [oglop@localhost linux-stable-kernel]$ git status

当前没有任何分支。`

- Shuman
1个回答

22

如果您需要提供标记名称v2.6.22.19和存储库URLgit://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git,请尝试以下操作:

git clone --depth 1 --single-branch --branch v2.6.22.19 git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git

--depth 1参数将只下载分支中的最新提交,这也有助于解决大小问题。


10
--depth 参数包含了 --single-branch 的意义,因此后者是不必要的。 - P-Gn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接