我已经通过git取回所有远程分支。我可以看到我想合并的分支通过git branch -a作为remotes/origin/branchname。问题是它无法进入。我不能合并或结帐。
您可以引用那些远程跟踪分支~(与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)。
也许你想用本地分支跟踪远程分支:
创建一个新的本地分支:
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 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 fetch origin remote_branch_name
将远程分支合并到本地分支
git merge origin/remote_branch_name