6

合并后,我想使用 git mergetool 解决问题,但使用我指定的任何工具都会失败:

git 合并工具                                                                                                          
 合并工具候选: opendiff kdiff3 tkdiff xxdiff meld tortoisemerge gvimdiffdiffuse ecmerge p4merge araxis bc3 vimdiff emerge
合并:
主程序

'main.c' 的正常合并冲突:
  {local}:修改文件
  {remote}:修改文件
点击回车开始合并解析工具(kdiff3):
main.c 合并失败

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

的输出

git 配置 -- 列表

合并工具=kdiff3
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
4

2 回答 2

5

kdiff3可能没有安装在您的系统上。如果是,请检查它是否可以通过您的PATH变量获得

尝试

git config --global merge.tool <your_merge_program>

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

于 2012-06-21T11:45:38.247 回答
1

请注意,git 2.10 将提供更好的退出状态来识别 diff/merge 工具安装问题。

请参阅John Keeping ( )的提交 45a4f5d(2016 年 8 月 15 日) 。(由Junio C Hamano 合并——提交 331f06d中,2016 年 8 月 19 日)johnkeeping
gitster

difftool:始终遵守致命错误退出代码

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

POSIX 指定

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

将 126 或更大的任何值作为特殊值处理,以指示发生某种形式的致命错误。

于 2016-08-22T08:03:17.063 回答