2

我已经开始使用 meld 作为我的merge.tool. 到目前为止一切正常,但我今天遇到了三路合并问题。

在 MyBranch 的 file.txt 中,我添加了代码ME

A
B
ME
D
E

同时,master增加了代码THEM_1THEM_2. 我跑git rebase master。这是 rebase 暂停时 file.txt 的外观:

  A
  THEM_1
  B
<<<<<<< HEAD
  ME
||||||| merged common ancestors
=======
  THEM_2
>>>>>>> My patch name
  D
  E

THEM_2 在合并中应该在 ME 之前,所以明显的合并是

A
THEM_1
B
THEM_2
ME
D
E

但是当我运行git mergetoolwhich opens meld 时,三个版本都没有THEM_1. 是什么赋予了?

4

1 回答 1

2

我只是试图重现你的情况。

如果我这样做git checkout me; git merge theirs; git mergetool -t meld,我会得到以下信息:

local | merge | remote
------+-------+-------
A     | A     | A
B     | B     | THEM_1
ME    | D     | B
D     | E     | THEM_2
E     |       | D
      |       | E

(这正是中间两个分支和共同父级的内容。)

如果我这样做git checkout me; git rebase theirs; git mergetool -t meld,我会在本地和远程交换时得到相同的结果。

在这两种情况下,您只需单击即可添加 THEM_1。对于 ME/THEM_2 的冲突,您可以单击添加一侧,但必须在中间框架中手动添加另一侧。

看看kdiff3它是一个更好的解决合并冲突的工具。

请注意,如果要对多个提交进行 rebase,则存在冲突的 rebase 往往会很棘手。

于 2013-10-26T08:19:52.980 回答