English ▾ 主题 ▾ 最新版本 ▾ git-difftool 上次更新于 2.49.0

名称

git-difftool - 使用常用 diff 工具显示更改

概要

git difftool [<options>] [<commit> [<commit>]] [--] [<path>…​]

描述

git difftool 是一个 Git 命令,允许您使用常用 diff 工具比较和编辑修订版本之间的文件。 git difftoolgit diff 的前端,并接受相同的选项和参数。请参阅 git-diff[1]

选项

-d
--dir-diff

将修改后的文件复制到临时位置,并对它们执行目录差异。此模式在启动差异工具之前从不提示。

-y
--no-prompt

在启动差异工具之前不要提示。

--prompt

在每次调用差异工具之前进行提示。这是默认行为;提供此选项是为了覆盖任何配置设置。

--rotate-to=<file>

开始显示给定路径的差异,该路径之前的路径将移动到末尾并输出。

--skip-to=<file>

开始显示给定路径的差异,跳过其之前的所有路径。

-t <tool>
--tool=<tool>

使用 <tool> 指定的差异工具。有效值包括 emerge、kompare、meld 和 vimdiff。运行 git difftool --tool-help 以获取有效 <tool> 设置的列表。

如果未指定差异工具,git difftool 将使用配置变量 diff.tool。 如果未设置配置变量 diff.tool,则 git difftool 将选择合适的默认值。

您可以通过设置配置变量 difftool.<tool>.path 显式提供该工具的完整路径。 例如,您可以通过设置 difftool.kdiff3.path 来配置 kdiff3 的绝对路径。 否则,git difftool 假定该工具在 PATH 中可用。

通过在配置变量 difftool.<tool>.cmd 中指定要调用的命令行,可以自定义 git difftool 以运行替代程序,而不是运行已知的差异工具之一。

当使用此工具调用 git difftool 时(通过 -t--tool 选项或 diff.tool 配置变量),将使用以下可用变量调用配置的命令行:$LOCAL 设置为包含差异前置图像内容的临时文件的名称,$REMOTE 设置为包含差异后置图像内容的临时文件的名称。$MERGED 是被比较文件的名称。$BASE 是为了与自定义合并工具命令兼容而提供的,并且具有与 $MERGED 相同的值。

--tool-help

打印可以使用 --tool 的差异工具列表。

当在 --dir-diff 模式下运行且比较的右侧产生与工作树中的文件相同的内容时,git difftool 的默认行为是创建指向工作树的符号链接。

指定 --no-symlinks 指示 git difftool 创建副本代替。 --no-symlinks 是 Windows 上的默认设置。

-x <command>
--extcmd=<command>

指定用于查看差异的自定义命令。当指定此选项时,git-difftool 会忽略配置的默认值并运行 <command> $LOCAL $REMOTE。此外,$BASE 在环境中设置。

-g
--[no-]gui

当使用 -g--gui 选项调用 git-difftool 时,默认差异工具将从配置的 diff.guitool 变量而不是 diff.tool 中读取。 可以使用配置变量 difftool.guiDefault 自动选择此项。 --no-gui 选项可用于覆盖这些设置。 如果未设置 diff.guitool,我们将按 merge.guitooldiff.toolmerge.tool 的顺序回退,直到找到一个工具。

--[no-]trust-exit-code

默认情况下,差异工具报告的错误将被忽略。 使用 --trust-exit-code 使 git-difftool 在调用的差异工具返回非零退出代码时退出。

使用 --trust-exit-code 时,git-difftool 将转发调用工具的退出代码。

有关支持的选项的完整列表,请参见 git-diff[1]

配置

当尚未定义 difftool 等效项时,git difftool 将回退到 git mergetool 配置变量。

本节中此行之上的所有内容均不包含在 git-config[1] 文档中。 以下内容与在那里找到的内容相同

diff.tool

控制 git-difftool[1] 使用的差异工具。 此变量将覆盖在 merge.tool 中配置的值。 以下列表显示了有效的内置值。 任何其他值都被视为自定义差异工具,并且需要定义相应的 difftool.<tool>.cmd 变量。

diff.guitool

当指定 -g/--gui 标志时,控制 git-difftool[1] 使用的差异工具。 此变量将覆盖在 merge.guitool 中配置的值。 以下列表显示了有效的内置值。 任何其他值都被视为自定义差异工具,并且需要定义相应的 difftool.<guitool>.cmd 变量。

  • araxis

  • bc

  • codecompare

  • deltawalker

  • diffmerge

  • diffuse

  • ecmerge

  • emerge

  • examdiff

  • guiffy

  • gvimdiff

  • kdiff3

  • kompare

  • meld

  • nvimdiff

  • opendiff

  • p4merge

  • smerge

  • tkdiff

  • vimdiff

  • vscode

  • winmerge

  • xxdiff

difftool.<tool>.cmd

指定调用指定差异工具的命令。 指定的命令在 shell 中进行评估,并提供以下变量:LOCAL 设置为包含差异前置图像内容的临时文件的名称,REMOTE 设置为包含差异后置图像内容的临时文件的名称。

有关更多详细信息,请参见 git-difftool[1] 中的 --tool=<tool> 选项。

difftool.<tool>.path

覆盖给定工具的路径。 如果您的工具不在 PATH 中,这将非常有用。

difftool.trustExitCode

如果调用的差异工具返回非零退出状态,则退出 difftool。

有关更多详细信息,请参见 git-difftool[1] 中的 --trust-exit-code 选项。

difftool.prompt

在每次调用差异工具之前进行提示。

difftool.guiDefault

设置 true 默认使用 diff.guitool (等效于指定 --gui 参数),或 auto 根据是否存在 DISPLAY 环境变量值选择 diff.guitooldiff.tool。 默认值为 false,其中必须显式提供 --gui 参数才能使用 diff.guitool

参见

git-diff[1]

显示提交之间、提交和工作树等之间的更改

git-mergetool[1]

运行合并冲突解决工具来解决合并冲突

git-config[1]

获取和设置仓库或全局选项

GIT

属于 git[1] 套件的一部分

scroll-to-top