使用git获取特定分支


19

我想使用Xilinx Wiki中所述的git 从master-next分支下载源代码。

我尝试了这个:

#git clone git://github.com/Xilinx/u-boot-xlnx/tree/master-next.git

Initialized empty Git repository in /home/Hannan/master-next/.git/
fatal: remote error:
Xilinx/u-boot-xlnx/tree/master-next is not a valid repository name
Email support@github.com for help

即使失败了:

# git clone git://github.com/Xilinx/tree/master-next/u-boot-xlnx.git
Initialized empty Git repository in /home/Hannan/u-boot-xlnx/.git/
fatal: remote error:
Xilinx/tree/master-next/u-boot-xlnx is not a valid repository name
Email support@github.com for help

起作用的命令是:

 git clone git://github.com/Xilinx/u-boot-xlnx.git

但是我怎么知道这确实会获取master-next分支而不是master分支?如何使用git正确获取特定分支?

我正在使用RHEL 6,可通过PuTTY访问。

Answers:


16

就像错误消息告诉您的一样,git clone需要一个git存储库。您不能像这样在路径中“添加”分支的名称。查看git中的分支

您可以克隆一个分支(及其分支): git clone <url> --branch <branch> --single-branch

请参阅git help clone

但是您运行的clone命令为您提供了整个存储库的副本,您可以使用查看现有分支,git branch并通过查看更多有关分支的详细信息git show-branch

切换到所需的分支git checkout branch-name

Pro Git书的第一章(在线提供)提供了有关基本命令的更多详细信息。


“您运行的克隆命令给了您整个存储库的副本。”整个存储库意味着两个分支合并了吗?
user2799508 2014年

不,它们不会合并。git中的分支不是整个目录的副本,如此处所述
Leiaz 2014年

我所做的是:“ git clone -b master-next github.com/Xilinx/u-boot-xlnx.git ”不正确吗?
user2799508

您不再需要克隆。您在问题中显示的命令为您提供了带有所有分支的存储库。但这也是正确的。等同于git checkout master-next克隆后进行。
Leiaz 2014年

13

该命令应该起作用:

$ git fetch origin [branch]

上面的命令仅从远程存储库中获取元数据,而不合并源。

如果要获取和合并源,则命令为:

$ git pull origin [branch]

在执行合并命令的分支处要小心。将在其中合并源。


您的答案在技术上是正确的,但我认为它可能会从语法检查/重写中受益。
萨米·莱恩

这很好工作thx
nwgat 2014年

4

git存储库包含所有分支(但压缩且只有差异,因此很少出现大小问题)。

因此,您可以成功完成克隆整个项目。即使您只对一个分支感兴趣,这也是获取存储库的一种标准方法。

然后,.git结构将包括在该存储库上完成的所有分支。

要使用特定分支,请执行以下操作:git checkout [branch_name] 如果分支存在,则文件将在本地可用(正是如此,项目目录中的当前文件)。

git status 然后将显示哪个分支是当前分支,例如:

根据Leiaz所说,可以克隆特定的分支。在实践中,我从未做过或从未见过其他人使用它。在进一步的研究中,我发现它是相对较新的功能,已添加到git 1.7.10(2012年4月)中:'git clone learning -single-branch'选项可将克隆限制为单个分支(惊奇!);没有指向分支历史的标签不会被获取。例如:

git clone -b master-next --single-branch git://github.com/Xilinx/

在此处输入图片说明 在这里,对于我的“链接器”应用程序,我正在签出分支 v3.0.10


1
我也从未做过,我记得看到了这个选项。我猜它很少使用,因为多余的分支大小“便宜”。
Leiaz 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.