我怎么能强制mergetool GUI(KDiff3)总是显示?

Ond*_*rka 29 git mergetool git-merge kdiff3

如何强制始终显示mergetool GUI并禁用任何自动解析?

有时,当有合并过程中发生冲突,我使用合并工具,它只是立即返回,我打后Enter的问题"回车,启动合并解决工具(kdiff3)",并没有GUI显示,冲突似乎得到解决.

我让Git配置为现在使用KDiff3作为mergetool,但是当我codecompare指定mergetool 时也发生了.我知道在KDiff3 中有一个选项"自动保存并退出合并而没有冲突",这理论上可能导致所描述的行为,但我一直禁用/取消选中此选项.

此外,在Git mergetool gitconfig中直接有trustExitCode选项,我将其设置为true,但即使我将其设置为false,也不会显示GUI.

我不知道是谁自动解决了.Mergetool在一些预处理或KDiff3?

我在Windows上运行并安装了Git扩展.

类似于KDiff3的问题,也在这里被问到:Kdiff3不会用mergetool命令打开

PiQ*_*uer 31

Git已经--auto硬编码为KDiff3的命令行选项,如果KDiff3可以自动解析所有冲突,则会导致GUI无法显示.在KDiff3设置中,您可以指定要忽略的命令行选项,但放在--auto那里对我不起作用.

作为一种解决方法,我将自己的KDiff3变体配置为合并工具:

git config --global mergetool.kdiff3NoAuto.cmd "kdiff3 --L1 \"\$MERGED (Base)\" --L2 \"\$MERGED (Local)\" --L3 \"\$MERGED (Remote)\" -o \"\$MERGED\" \"\$BASE\" \"\$LOCAL\" \"\$REMOTE\""
Run Code Online (Sandbox Code Playgroud)

这与Git默认使用的KDiff3非常相似,但没有--auto标志.

现在,您可以全局调用git mergetool -t kdiff3NoAuto或配置kdiff3NoAuto为mergetool,并且在解决冲突时KDiff3将始终显示.

关于问题的第二部分,如果你真的想要禁用任何自动解析,只需添加--qallkdiff3上面的命令行.但是,您必须手动解决文件中的所有更改,即使是那些不会导致Git冲突的更改.最好的方案是:KDiff3显示Git如何合并文件并让冲突保持开放供用户选择.

  • 在KDiff3 0.9.98(64位)中,将'--auto'添加到被忽略的命令行选项对我有用。设置菜单->配置KDiff3->集成选项卡。出现自动解析的信息对话框,但随后显示结果合并,允许进一步编辑。 (2认同)

小智 5

Bob esponja 对已接受答案的评论对我使用 KDiff3 0.9.98 非常有效。

添加--auto要忽略的命令行选项:

Settings | Configure KDiff3... | Integration tab.
Run Code Online (Sandbox Code Playgroud)

KDiff3 出现“冲突”对话框,指示未解决冲突的数量: 0,但是您可以根据需要检查/修改合并状态。

比配置您自己的变体更方便一点,因为无论是来自 git mergetool、Source Tree 还是任何使用 mergetool 的工具,它都会按预期工作。