Git合并工具失败

6
在合并后,我想使用git mergetool解决问题,但无论我指定什么工具,它都会失败:
git mergetool                                                                                                          
 merge tool candidates: opendiff kdiff3 tkdiff xxdiff meld tortoisemerge gvimdiff diffuse ecmerge p4merge araxis bc3 vimdiff emerge
Merging:
main.c
'main.c'的普通合并冲突: {local}:修改后的文件 {remote}:修改后的文件 按回车键启动合并解决工具(kdiff3): main.c的合并失败

我指定的工具似乎根本没有启动。

git config --list
的输出结果:

merge.tool=kdiff3
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
2个回答

5

kdiff3可能没有安装在您的系统上。如果已经安装,请检查是否可通过您的PATH变量使用。

尝试:

git config --global merge.tool <your_merge_program>

另外,您可以指定您的操作系统和可用的合并程序。


我有kdiff3、meld、gvimdiff(7.2)等工具,但似乎都无法正常工作。我正在使用RH4操作系统。 - Paul Praet
请添加您的 git config --list 输出,但请勿包含您的电子邮件/密码等私人信息。 - Ribtoks
我假设你是在Linux系统下运行它? - Ribtoks
1
你尝试在终端中运行你的合并工具了吗?(我的意思是不使用git)。如果不能,则通过echo $PATH来检查它是否在你的$PATH中。 - Ribtoks
对于通过谷歌搜索到这里的任何人,<your_merge_program> 不是你的合并程序的路径。请参考这里以获取如何配置你的合并工具的完整示例。 - Roman Starkov
显示剩余2条评论

1
请注意,Git 2.10将提供更好的退出状态以识别差异/合并工具安装问题。
请参见提交45a4f5d(由John Keeping (johnkeeping)于2016年8月15日提交)。 (由Junio C Hamano -- gitster --提交331f06d中合并,于2016年8月19日)

difftool:始终尊重致命错误退出代码

目前,difftool的“信任退出代码”逻辑总是抑制我们调用的diff实用程序的退出状态。
这很有用,因为我们不希望仅因文件不同而退出,但如果所选的diff实用程序未找到,则会导致shell返回错误,这很令人困惑。

POSIX指定

至少bash和dash遵循此规范,而diff实用程序通常使用我们要忽略的“1”作为退出状态。

将126或更高的任何值视为特殊值,指示发生了某种致命错误。


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