【问题标题】:Git merging one branch into another is a two way merge?Git将一个分支合并到另一个分支是双向合并吗?
【发布时间】:2013-02-21 21:28:40
【问题描述】:

我的 git repo 看起来像这样:

         _ 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. 为什么没有显示 master 中的共享基础?

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

【问题讨论】:

  • 如果要将 A 合并到 B 中,正确的命令是 git checkout branch_b git merge branch_a
  • 你用的是什么版本的git?当我将 meld 用作合并工具时,它会将其呈现为公共基础的三向合并。我从来没有见过它只显示两个文件,所以我不知道你应该修改哪个。
  • 奇怪,那个版本肯定会提供文件的通用基础版本以及两个分支的版本。

标签: git merge git-merge meld


【解决方案1】:

如果你将一个分支 A 合并到一个分支 B 中,你得到的冲突来自两个分支之间的差异,而不是来自与 master 的差异。在 A 或 B 中执行 git diff 会给你与 mastere 的差异,因为它是祖先

通常本地分支应该是您要合并到的分支,而远程应该是您要合并的分支强>。无论如何,在您的计算机中,您将只有一个文件副本,因此只需修改它

【讨论】:

  • 从技术上讲,master 分支不会参与合并。但是,在这种情况下,master 指向的提交将是因为它是共同的祖先。
  • 分支(a 或 b)的差异取自与祖先(在本例中为 master)的比较,这是正确的,但是当您将 A 合并到 B 时,这些分支会给出冲突而不是主人。这就是我的意思。我编辑了我的答案
猜你喜欢
  • 1970-01-01
  • 2013-11-09
  • 1970-01-01
  • 1970-01-01
  • 2019-01-04
  • 1970-01-01
  • 1970-01-01
  • 2010-12-15
  • 2017-08-04
相关资源
最近更新 更多