如何在git中使用不同的merge和diff工具?

时间:2017-09-14 11:41:23

标签: git diff git-diff mergetool difftool

我更喜欢使用meld作为差异工具。但是它没有选择快速解决所有简单的冲突,所以在合并的情况下,我想使用kdiff3

我已将merge.tool设置为kdiff3和diff.guitool以融合但git difftool仍然始终运行kdiff3

[merge]
        tool = kdiff3
        conflictstyle = diff3

[diff]
        guitool = meld
        renames = copies
        mnemonicPrefix = true

[difftool]
        prompt = false

如何git difftool运行meld

2 个答案:

答案 0 :(得分:2)

diff.guitool only applies if you use the --gui flag

设置diff.toolmerge.tool会使git difftoolgit mergetool使用不同的工具:

[merge]
        tool = kdiff3

[diff]
        tool = meld

答案 1 :(得分:1)

注意:自Git 2.22(2019年第二季度)以来,append()个配置变量的组合以合理的顺序用作彼此的后备设置。

请参见commit 6c22d71commit 7f978d7commit 60aced3commit 884630bcommit 05fb872(2019年4月29日)和commit 57d93c1,{{3} }(2019年4月24日)通过commit e9d309e
(由Denton Liu (Denton-L)Junio C Hamano -- gitster --中合并,2019年5月19日)

在您的情况下,由于未定义difftool:

  

{diff,merge}.{tool,guitool}:在difftool后退

     

在git-difftool.txt中,它说

     
    

'merge.guitool'后退到'git difftool'配置变量         difftool等效项尚未定义。

  
     

但是,当缺少git mergetool时,它不会回退到   任何东西。当diff.guitool为时,使git-difftool回退到merge.guitool   丢失。

commit 85ac27e现在包括:

  

diff.guitool

     

当使用git difftool -g/--guigit difftool选项调用'-g'时,将从配置的--gui变量而不是{{1} }。
  diff.guitool选项可用于覆盖此设置。

     

如果未设置diff.tool,我们将以--no-gui的顺序回退,   diff.guitoolmerge.guitool,直到找到工具为止。