2014-02-08 158 views
106

我已通过git fetch --all将所有远程分支拉出。我可以看到我想通过git branch -a合并的分支作为遥控/起源/ branchname。问题是它不可访问。我无法合并或结帐?Git:本地合并远程分支

回答

167

您可以参考这些远程跟踪分支〜(与git branch -r列出)​​与他们的远程名称。

如果要合并的远程分支之一在你的本地分支:

git checkout master 
git merge origin/aRemoteBranch 

如果要合并当地的一个分支,在那些偏远的一个分支,你需要创建一个本地分支在上述远程分支第一的顶部:

git checkout -b myBranch origin/aBranch 
git merge aLocalBranch 
+0

aLocalBranch?是一个错字?我想你打算再次写“myBranch”? – knocte

+0

@knocte否:“如果你想将一个本地分支合并到其中一个远程分支上”:我将“'aLocalBranch'”合并到''myBranch'','myBranch'代表一个远程分支'产地/ aBranch'。 – VonC

57

每当我做了合并,我进入我要合并到(例如“git checkout branch-i-am-working-in”)的分支,然后执行以下操作:

git merge origin/branch-i-want-to-merge-from

10

也许你想轨道远程分支与当地分公司:

  1. 创建新的本地分支:git branch new-local-branch
  2. 设置这个新创建的分支用于跟踪远程分支:git branch --set-upstream-to=origin/remote-branch new-local-branch
  3. 进入到这个分支:git checkout new-local-branch
  4. 拉远程分支到本地分支机构的所有内容: git pull
+1

我发现这是将多个远程分支合并到我正在处理的新分支中的好方法。谢谢。 –

+0

用一个命令合并多个分支的方法非常棒 –

0

如果你已经获取远程分支和做git branch -a
你获得类似:

* 8.0 
    xxx 
    remotes/origin/xxx 
    remotes/origin/8.0 
    remotes/origin/HEAD -> origin/8.0 
    remotes/rep_mirror/8.0 

之后,您可以使用rep_mirror/8.0在本地指定远程分支。

诀窍是remotes/rep_mirror/8.0不起作用,但rep_mirror/8.0呢。

因此,像git merge -m "my msg" rep_mirror/8.0这样的命令进行合并。

(注:这是@VonC答案评论我把它当作另一种答案,因为代码块不适合的注释格式。)