I prefer to use meld as the diff tool. However it doesn't have an option to quickly solve all simple conflicts so in case of merging I'd like to use kdiff3
I've set merge.tool to kdiff3 and diff.guitool to meld but git difftool still always run kdiff3
[merge]
tool = kdiff3
conflictstyle = diff3
[diff]
guitool = meld
renames = copies
mnemonicPrefix = true
[difftool]
prompt = false
How to make git difftool run meld?
diff.guitool only applies if you use the --gui flag.
Setting diff.tool and merge.tool should make git difftool and git mergetool use different tools:
[merge]
tool = kdiff3
[diff]
tool = meld
Note: since Git 2.22 (Q2 2019), the combinations of {diff,merge}.{tool,guitool} configuration variables serve as fallback settings of each other in a sensible order.
See commit 6c22d71, commit 7f978d7, commit 60aced3, commit 884630b, commit 05fb872 (29 Apr 2019), and commit 57d93c1, commit e9d309e (24 Apr 2019) by Denton Liu (Denton-L).
(Merged by Junio C Hamano -- gitster -- in commit 85ac27e, 19 May 2019)
In your case, since difftool is not defined:
difftool: fallback onmerge.guitoolIn git-difftool.txt, it says
'
git difftool' falls back to 'git mergetool' config variables when the difftool equivalents have not been defined.However, when
diff.guitoolis missing, it doesn't fallback to anything. Make git-difftool fallback tomerge.guitoolwhendiff.guitoolis missing.
The documentation now includes:
git difftool -g/--guiWhen '
git difftool' is invoked with the-gor--guioption, the default diff tool will be read from the configureddiff.guitoolvariable instead ofdiff.tool.
The--no-guioption can be used to override this setting.If
diff.guitoolis not set, we will fallback in the order ofmerge.guitool,diff.tool,merge.tooluntil a tool is found.
来源:https://stackoverflow.com/questions/46218164/how-to-use-different-merge-and-diff-tool-in-git