远程存储库包含各种分支,如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
远程存储库包含各种分支,如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 <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。
其他回答
要签出远程而非本地存在的myBranch,这对我很有用:
git fetch --all
git checkout myBranch
我收到了这条消息:
Branch myBranch set up to track remote branch myBranch from origin
Switched to a new branch 'myBranch'
git fetch--all&git checkout<分支名称>
有时,你被要求不要摆弄主分支,只在远程分支工作(正如我被要求的那样)。所以你只需要远程分支。
因此,要单独克隆远程分支(没有主分支),请执行以下操作
git clone url --branch remote_branch_name
哪里remote_branch_name是远程分支的名称
例如
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git --branch v3.15
这将确保您使用远程分支的名称将远程分支克隆到本地分支。
现在,如果您提交代码并推送,代码将单独提交给该分支。
git fetch
git branch -r
git checkout <branch_name>
只需尝试:
git pull origin your_branch_name