Git获取远程分支

我和我的同事正在研究同一个存储库,我们将它分为两​​个分支,每个分支在技术上适用于不同的项目,但它们有相似之处,所以我们有时想要从分支中重新提交给* master。

但是,我有分支,我的同事怎能具体拉那个分支。 回购的git clone似乎并没有在本地为他创建分支,尽管我可以在推动我的结局之后看到他们生活在一个无情的世界。

另外,当我最初做分支时,我做了-b checkout 。 不知道这是否有很大的不同?

iMac:test_solar dave$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master

git fetch origin discover
git checkout discover

这是我跑的命令。 但绝对不行。 我希望能够检出该分支,然后推送并恢复来自各个协作者或工作站的分支更改。


您需要创建一个跟踪远程分支的本地分支。 以下命令将创建一个名为daves_branch的本地分支,用于跟踪远程分支源/ daves_branch 。 当你推动你的改变时,远程分支将被更新。

对于大多数版本的git:

git checkout --track origin/daves_branch

--trackgit checkout -b [branch] [remotename]/[branch]缩写git checkout -b [branch] [remotename]/[branch]其中[remotename]是本例中的起源 ,[branch]是两次相同的daves_branch

对于git 1.5.6.5,你需要这个:

git checkout --track -b daves_branch origin/daves_branch

对于git 1.7.2.3和更高版本,这已经足够了(可能已经开始更早了,但这是我可以快速找到的最早的确认):

git checkout daves_branch

请注意,使用最近的git版本,该命令不会创建本地分支,并会使您处于“分离的HEAD”状态。 如果您想要本地分支,请使用--track选项。 全部细节在这里:http://git-scm.com/book/en/v2/Git-Branching-Remote-Branches#Tracking-Branches


我使用了fetch然后是checkout ...

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

...其中<rbranch>是远程分支或源代码, <lbranch>是您要跟踪的尚不存在的本地分支或目标引用,以及您可能想要将其命名为远程分支或源代码引用。 这在<refspec>的解释中的选项下进行了解释。

Git非常聪明,如果我在远程分支的前几个字母后面标签,它会自动完成第一条命令。 IE:我甚至不需要命名本地分支,Git自动为我复制远程分支的名称。 谢谢Git!

同样在这篇相似的SO文章中的答案显示,如果您没有在fetch命名本地分支,那么当您使用-b标志签出时仍然可以创建它。 IE: git fetch <remote> <branch>后跟git checkout -b <branch> <remote>/<branch>与我的初始答案完全一样。 显然,如果您的回购只有一个远程,那么您可以在fetch后执行git checkout <branch> ,它将为您创建一个本地分支。 EG:您刚刚克隆了一个回购协议,并希望查看远程的其他分支。

我认为,对于一些文件的fetch可能已经从逐字抄pull 。 特别是选项中的<refspec>部分是相同的。 然而,我不相信fetchmerge ,所以如果你离开冒号的目标端,空的fetch 应该什么也不做

注意: git fetch <remote> <refspec>是短期的git fetch <remote> <refspec>:因此它会做什么,但git fetch <remote> <tag>相同git fetch <remote> <tag>:<tag>应该在本地复制远程<tag>

我想这只有在你想在本地复制一个远程分支时才有用,但不一定马上检查它。 否则,我现在将使用上面所接受的答案,这在结帐说明的第一部分中详细解释,后面在--track的解释下的选项部分中详细解释,因为它是--track的。 那么...有点像1班,因为你仍然必须首先运行git fetch <remote>

仅供参考: <refspecs> (source:destination)的顺序解释了用于删除远程分支的奇怪的Git-1.7前方法。 IE:将任何东西都压入目的地refspec。


如果您试图“签出”一个新的远程分支(只存在于远程,但不在本地),以下是您需要的东西:

git fetch origin
git checkout --track origin/<remote_branch_name>

这假定你想从原点获取。 如果不是,请用您的远程名称替换原点。

链接地址: http://www.djcxy.com/p/671.html

上一篇: Git fetch remote branch

下一篇: How do you stop tracking a remote branch in Git?