Git:本地合并一个远程分支

我已经通过git fetch --all提取了所有远程分支。我可以看到我想通过git branch -a合并的分支作为remotes/origin/branchname。问题是它无法进入。我不能合并或结帐。

574146 次浏览

每当我做一个合并,我进入我想合并到的分支(例如。"git checkout branch-i-am-working-in"),然后执行以下操作:

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

你可以引用那些远程跟踪分支~(用git branch -r列出)和它们的远程名称。

你需要获取远程分支:

git fetch origin aRemoteBranch

如果你想合并一个远程分支到你的本地分支:

git checkout aLocalBranch
git merge origin/aRemoteBranch

注1:对于具有较长历史的大型回购,在使用git fetch时需要添加--depth=1选项。

注2:这些命令也适用于其他远程回购,所以如果你在fork上工作,你可以设置originupstream

注3: user3265569建议使用以下别名在评论中:

aLocalBranch中执行git combine remoteBranch
别名:< / p >

combine = !git fetch origin ${1} && git merge origin/${1}

相反的场景:如果你想合并一个远程分支上的本地分支(而不是远程分支到本地分支,如上所示),你需要首先在所述远程分支上创建一个本地分支:

git checkout -b myBranch origin/aBranch
git merge anotherLocalBranch

这里的想法,是合并“你的一个本地分支”;(这里是anotherLocalBranch)到远程分支(origin/aBranch)。
为此,您首先创建“myBranch"表示该远程分支:即git checkout -b myBranch origin/aBranch部分。
然后你可以将anotherLocalBranch合并到它(到myBranch)

也许你想用一个本地分支跟踪远程分支:

  1. 创建一个新的本地分支:
  git branch -b new-local-branch
  1. 设置这个新创建的分支来跟踪远程分支:
  git branch --set-upstream-to=origin/remote-branch new-local-branch
  1. 进入这个分支:
  git checkout new-local-branch
  1. 将远程分支的所有内容拉到本地分支:
  git pull
如果你已经获取了你的远程分支并执行git branch -a
. bb0 你会得到如下结果:

* 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回答的评论。我把它作为另一个答案,因为代码块不适合注释格式)

首先从原点获取远程分支。

git fetch origin remote_branch_name

将远程分支合并到本地分支

git merge origin/remote_branch_name