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


当前回答

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

git fetch origin remote_branch_name

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

git merge origin/remote_branch_name

其他回答

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

创建一个新的本地分支:

  git branch -b new-local-branch

设置这个新创建的分支来跟踪远程分支:

  git branch --set-upstream-to=origin/remote-branch new-local-branch

进入这个分支:

  git checkout new-local-branch

将远程分支的所有内容拉到本地分支:

  git pull

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

我想说的

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

git fetch origin remote_branch_name

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

git merge origin/remote_branch_name

如果你已经获取了远程分支并执行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回答的评论。我把它作为另一个答案,因为代码块不适合注释格式)

您可以引用那些远程跟踪分支~(与git branch -r一起列出),并使用它们的远程名称。

你需要获取远程分支:

git fetch origin aRemoteBranch

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

git checkout aLocalBranch
git merge origin/aRemoteBranch

注意1:对于一个有很长历史的大型回购,当你使用git取回时,你会想要添加——depth=1选项。

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

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

从localbranch运行git combine remoteBranch 别名: getgetsource ${1} && git合并origin/${1}


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

git checkout -b myBranch origin/aBranch
git merge anotherLocalBranch

这里的想法是将“一个本地分支”(这里是anotherLocalBranch)合并到一个远程分支(origin/ branch)。 为此,您创建了第一个“myBranch”来表示远程分支:这是git checkout -b myBranch origin/ branch部分。 然后你可以合并另一个localbranch到它(myBranch)。