远程存储库包含各种分支,如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
当前回答
[快速回答]
有很多选择,我最喜欢的是:
-备选方案1:
git fetch --all
git checkout YourBranch
使用此替代方法时,请使用远程存在但不在本地的分支。
-备选方案2:
git checkout -b 'YourBranch' origin/'YourRemote'
也许,这是最简单的方法。
其他回答
我使用了先取后结账。。。
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。
有时,你被要求不要摆弄主分支,只在远程分支工作(正如我被要求的那样)。所以你只需要远程分支。
因此,要单独克隆远程分支(没有主分支),请执行以下操作
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/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。
你用“git pull”来保持你的分支分开。我将使用实际的存储库和分支名称来帮助,因为“lbranch”和“rbranch”很难破译。
让我们使用:myteam.unfuddle.com=远程Git服务器tlc=存储库所在的未归档项目帐户daves_branch=远程分支名称
无论有多少分支,您或任何同事都可以运行此命令仅拉动您的分支:
git init
git pull git@myteam.unfuddle.com:myteam/tlc daves_branch:refs/remotes/origin/daves_branch
在我看来,这一行命令是获取和签出本地不存在的远程分支的最简单方法:git获取和git签出remote_branch