将一个分支合并到另一个分支中的Git合并是双向合并吗?

36
我的git仓库看起来像这样:

My git repo looks like this:

         _ branch_a
        /
master /
        \_ branch_b

现在我想将 branch_b 合并到 branch_a,而不是将任何一个分支合并到 master 分支。

因此,我执行了以下操作:

git checkout branch_a
git merge branch_b

Git 发现了一些冲突。

当我使用 meld 命令执行 git mergetool 时,控制台输出:

 {local}: modified file
 {remote}: modified file

并且有一个窗口只显示LOCAL和REMOTE。

我想知道的是:

  1. 为什么没有显示在主分支中的共享基础?

  2. 在LOCAL和REMOTE之间,我应该编辑哪一个?


7
如果你想将分支A合并到分支B中,正确的命令是git checkout branch_b git merge branch_a - iberbeu
你使用的git版本是哪个?当我使用meld作为合并工具时,它会将其呈现为基于共同基础的三方合并。我从未见过它只显示两个文件,所以我不知道你应该修改哪个文件。 - qqx
奇怪,那个版本肯定应该给出meld文件的公共基础版本以及来自两个分支的版本。 - qqx
1个回答

11
如果你将分支A合并到分支B中,所得到的冲突来自于两个分支之间的差异,而不是与主分支的差异。在A或B中执行git diff将会显示与主分支的差异,因为它是祖先。
通常情况下,本地分支应该是你要合并到的分支,而远程分支是你想要合并的分支。但无论如何,在你的计算机上只会有一个文件副本,所以只需修改它即可。

从技术上讲,“主”分支不会参与该合并。但是,在这种情况下,主分支指向的提交将是共同祖先。 - qqx
分支(a或b)的差异是从与祖先(在这种情况下为主)的比较中获取的,但是当您将A合并到B时,冲突是由这些分支而不是主分支引起的。这就是我的意思。我编辑了我的答案。 - iberbeu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接