为什么使用“git mergetool”(meld)会显示冲突标记?

12

'git mergetool'(meld)为什么会显示带有冲突标记的祖先视图?这是完全错误的,我从未理解为什么会这样。我该如何解决?

3路合并应该显示:

[ Your Changes ]          [ Common Base ]            [ Upstream Changes ]

我的理解是:

[ My Changes   ]   [ File with Conflict markers ]    [ Upstream changes ]

请参见:示例截图

1个回答

2

看起来你在配置文件中没有正确设置参数名称。你应该看到类似于 $BASE、$REMOTE 等的内容。请确保这些内容和 'meld' 的文档中指定的一样。

或者,你可能不小心提交了一个未解决的文件。要检查这个问题,请运行 git log -S'<<<<<<' 命令并查看是否有返回结果。如果有,那么就是这个问题。

希望这可以帮到你。


绝对不是第二个选项,但这是一个有效的可能性。 - Mark Renouf
1
好的。我会接受这个答案。虽然它不完全正确,但是它对问题的解释是正确的。基本问题在于meld只接受3个参数。$LOCAL $REMOTE和$BASE。合并结果需要写入$MERGED,但这个文件已经被Git添加了冲突标记。Meld不支持将合并结果保存到一个新文件中,因此必须使用$MERGED文件代替$BASE。--这是meld的标准配置--它完全错误且令人困惑。可以通过脚本解决,但我现在正在使用SourceGear DiffMerge。 - Mark Renouf
脚本似乎无法正常工作,Meld 显示的是目录的比较而不是文件。 - slikts
好的,请看看你能否修复它。 它 WFM :-) - Mark Renouf

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