git mergetool失败了

时间:2012-06-21 11:39:58

标签: git git-merge mergetool

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

git mergetool                                                                                                          
 merge tool candidates: opendiff kdiff3 tkdiff xxdiff meld tortoisemerge gvimdiff diffuse ecmerge p4merge araxis bc3 vimdiff emerge
Merging:
main.c

Normal merge conflict for 'main.c':
  {local}: modified file
  {remote}: modified file
Hit return to start merge resolution tool (kdiff3):
merge of main.c failed

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

输出

git config --list


merge.tool=kdiff3
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true

2 个答案:

答案 0 :(得分:5)

您的系统可能未安装

kdiff3。如果是,请检查您的PATH变量是否可用

尝试

git config --global merge.tool <your_merge_program>

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

答案 1 :(得分:1)

请注意,git 2.10将提供更好的退出状态,以识别差异/合并工具安装问题。

commit 45a4f5dJohn Keeping (johnkeeping)(2016年8月15日) (由Junio C Hamano -- gitster --合并于commit 331f06d,2016年8月19日)

  

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

     

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

     

POSIX指定

           

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

     

处理126或更高的任何值作为表示该值的特殊值   发生了某种形式的致命错误。