远程存储库包含各种分支,如origin/davis_branch:

$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/master

如何将daves_branch获取到本地存储库,以便它跟踪origin/davis_branch?

我尝试了:

$ git fetch origin discover
$ git checkout discover

当前回答

要获取远程上存在的分支,最简单的方法是:

git fetch origin branchName
git checkout branchName

您可以通过以下方式查看它是否已存在于远程:

git branch -r

这会将远程分支提取到本地,并自动跟踪远程分支。

其他回答

我使用了先取后结账。。。

git fetch <remote> <rbranch>:<lbranch>
git checkout <lbranch>

…其中<rbranch>是远程分支或源引用,<lbranch>则是您希望跟踪的尚未存在的本地分支或目标引用,您可能希望将其命名为与远程分支或目标参考相同的名称。这在<refspec>解释中的选项中进行了解释。

Bash非常聪明,如果我在远程分支的前几个字母后制表,它会自动完成第一个命令。也就是说,我甚至不必命名本地分支机构;Bash自动为我复制远程分支的名称。谢谢,Bash!

同样,正如这篇类似的StackOverflow文章中的答案所示,如果您没有在fetch中命名本地分支,那么您仍然可以在使用-b标志签出它时创建它。也就是说,git fetch<remote><branch>后接git checkout-b<branch<remote</<branch>与我的初始答案完全相同。显然,如果您的存储库只有一个远程,那么您只需在fetch之后执行git checkout<branch>,它就会为您创建一个本地分支。例如,您刚刚克隆了一个存储库,并希望从远程查看其他分支。

我相信,提取的一些文档可能是从pull中逐字复制的。特别是选项中关于<refspec>的部分是相同的。然而,我不相信fetch会合并,所以如果您将冒号的目标端留空,fetch应该什么都不做。

注意:git fetch<remote><refspec>是git fetch<remote><refspec>的缩写:因此它不会做任何事情,但git fech<remote><tag>与git feach<remote>><tag>:<tag>相同,它应该在本地复制remote<tag>。

我想,只有当您想在本地复制远程分支时,这才有用,但不一定要立即检查它。否则,我现在将使用已接受的答案,这将在结账说明的第一部分和稍后选项部分的--track解释中详细解释,因为它是一行代码。好有点像一行程序,因为您仍然需要先运行gitfetch<remote>。

仅供参考:<refspec>(来源:destination)的顺序解释了Git1.7之前删除远程分支的奇怪方法。也就是说,不将任何内容推入目标refspec。

Use:

git checkout -b serverfix origin/serverfix

这是一个非常常见的操作,Git提供了--track速记:

git checkout --track origin/serverfix

事实上,这是如此普遍,甚至有一条捷径。如果您尝试签出的分支名称(a)不存在,并且(b)仅与一个远程服务器上的名称完全匹配,Git将为您创建一个跟踪分支:

git checkout serverfix

要使用与远程分支不同的名称设置本地分支,可以轻松地使用具有不同本地分支名称的第一个版本:

git checkout -b sf origin/serverfix

现在,您的本地分支sf将自动从origin/serverfix中提取。

来源:Pro Git,第二版,由Scott Chacon和Ben Straub撰写(为便于阅读而删减)

检查.git/config文件,特别是该远程设备的fetch跟踪。

[remote "randomRemote"]
    url = git@github.com:someUser/someRepo.git
    fetch = +refs/heads/*:refs/remotes/randomRemote/*

如果头/*指向randomRemote/*,当您运行gitfetchrandomRemote时,它将获取所有分支。

然后你就可以结账了。

否则

您需要使用此命令将远程分支添加到跟踪中。运行此命令后,请检查.git/config。你会明白的。git remote set branches--add randomRemote randomBranch运行git fetch randomRemote。这将获取远程分支。现在您可以运行git checkout randomBranch。

[快速回答]

有很多选择,我最喜欢的是:

-备选方案1:

git fetch --all
git checkout YourBranch

使用此替代方法时,请使用远程存在但不在本地的分支。

-备选方案2:

git checkout -b 'YourBranch' origin/'YourRemote'

也许,这是最简单的方法。

我键入了

git checkout <branch_name>

并且得到

Branch <branch_name> set up to track remote branch <branch_name> from origin.
Switched to a new branch '<branch_name>'