Git:在本地合并Remote分支

问题描述 投票:160回答:5

我通过git fetch --all拉了所有远程分支。我可以看到我想通过git branch -a合并为遥控器/ origin / branchname的分支。问题是它无法访问。我不能合并或结账?

git repository branch git-branch
5个回答
249
投票

您可以使用其遥控器的名称引用那些远程跟踪分支〜(与git branch -r一起列出)。

您需要获取远程分支:

git fetch origin aRemoteBranch

如果要在本地分支上合并其中一个远程分支:

git checkout master
git merge origin/aRemoteBranch

注1:对于历史悠久的大型仓库,您需要在使用--depth=1时添加git fetch选项。

注意2:这些命令也适用于其他远程repos,因此如果您正在使用fork,可以设置originupstream


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

git checkout -b myBranch origin/aBranch
git merge anotherLocalBranch

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


77
投票

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

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


19
投票

也许您想要使用本地分支跟踪远程分支:

  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

13
投票

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

git fetch origin remote_branch_name

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

git merge origin/remote_branch_name

2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.