默认的git工具(和合并工具)是什么?
在哪里(以及如何)我能找到它?
我从来没有显式地为git散乱工具(也不是mergetool)设置任何配置,
所以git config --get difftool什么也没有显示。
git文档显示(https://git-scm.com/docs/git-difftool):
如果未设置配置变量
diff.tool,git difftool将选择合适的默认设置。
我怎么知道它选了哪一个?
“合适”的算法是如何工作的?
让我分享一下我为什么要通过git来找出当前选择的diff工具的原因:
我在执行git diff时遇到了一些奇怪的不同结果(我怀疑BOM处理问题)。
我想问一下卖主(比如p4merge),
但不确定是p4merge、vimdiff还是其他任何东西。
我预计可能会有类似于git difftool --current的命令。
发布于 2020-09-21 05:06:16
git difftool会告诉你它将尝试什么。
$ git difftool
This message is displayed because 'diff.tool' is not configured.
See 'git difftool --tool-help' or 'git help config' for more details.
'git difftool' will now attempt to use one of the following tools:
kompare emerge vimdiff
Viewing (1/1): 'this'
Launch 'emerge' [Y/n]?我们可以在guess_merge_tool function中找到这个过程。
guess_merge_tool () {
list_merge_tool_candidates
cat >&2 <<-EOF
This message is displayed because '$TOOL_MODE.tool' is not configured.
See 'git ${TOOL_MODE}tool --tool-help' or 'git help config' for more details.
'git ${TOOL_MODE}tool' will now attempt to use one of the following tools:
$tools
EOF
# Loop over each candidate and stop when a valid merge tool is found.
IFS=' '
for tool in $tools
do
is_available "$tool" && echo "$tool" && return 0
donelist_merge_tool_candidates设置$tools的列表。它假定,如果没有设置显示,您就没有GUI,这在MacOS上是不正确的。
然后它简单地遍历它们并选择第一个它为使用type找到一个可执行文件的文件。
更新
我在执行git时遇到了一些奇怪的不同结果(我怀疑BOM处理问题)。我想询问一下供应商(例如p4merge),但不确定它是p4merge、vimdiff还是其他任何东西。
如果您对git diff有异议,那就是git diff而不是git difftool。我认为对于git difftool所做的事情有一些混淆,所以下面是一个简单的概述。
git diff 不使用git-difftool.git difftool不选择用于git diff的diff工具。git diff有自己的内部diff实现。它还可以通过提供--ext-diff来使用外部的diff程序,比如GNU。
当您运行git difftool时,它会选择一个外部的diff程序,并使用三个环境变量运行它:$LOCAL、$REMOTE和$MERGED。$LOCAL是文件旧版本的路径,$REMOTE是新版本的路径,$MERGED是文件名的路径,因此可以显示它。事情就是这样。与git diff无关。
通过向git difftool添加自定义的扩散工具,我们可以看到.gitconfig做了什么:
[difftool "echo"]
cmd = echo "LOCAL: $LOCAL, REMOTE: $REMOTE, MERGED: $MERGED"
[difftool "less"]
cmd = less "$LOCAL" "$REMOTE"git difftool -t echo将显示环境变量。git difftool -t less将查看less寻呼机中新旧版本文件的内容。
如果您对git diff有问题,git difftool与此无关。p4merge和vimdiff也不应该。
https://stackoverflow.com/questions/63985751
复制相似问题