为什么git difftool使用git diff而不是其他工具?

4

我希望git diff成为一个快速的命令行解决方案,用于查看两个文件之间的差异。然后,我希望git difftool启动meld以查看文件差异的更多图形化视图。

目前,git diff恰好符合我的要求,但是当我运行git difftool script.js时,git尝试启动vimdiff而不是meld:

Viewing (1/1): 'script.js'
Launch 'vimdiff' [Y/n]:

如果我使用git difftool -t meld script.js指定工具,它会尝试按照应该的方式启动meld:
Viewing (1/1): 'script.js'
Launch 'meld' [Y/n]:

我该如何让git difftool <文件名>使用meld,而git diff <文件名>仍然使用vimdiff?


我的.gitconfig文件包含以下内容:

[diff]
     tool = vimdiff
[difftool]
    tool = meld
[difftool "meld"]
    path = C:\\Program Files (x86)\\Meld\\Meld.exe
1个回答

3
git config --global diff.tool meld

这将把默认的差异比对工具设置为meld。也就是说,当您调用git difftool而没有--tool参数时,git将运行meld。

您也可以删除配置中的那部分内容,因为git不会读取difftool.tool,因为它不是git已知的配置选项之一

[difftool]
    tool = meld

1
完美,解决了,谢谢!但是我不太明白发生了什么。这个命令将[diff] tool=vimdiff改为了[diff] tool=meld。当.gitconfig中不再指定vimdiff时,Git如何知道要使用vimdiff进行git diff - Zach Olivare
1
Diff 不使用 vimdiff。据我所知,git diff 在 shell 中实现了自己的 diff 算法/显示差异的方式。 - Alexander Groß

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