Skip to content

git-difftool

命令名称 - 使用常用 diff 工具显示更改

概要

bash
git difftool [<options>] [<commit> [<commit>]] [--] [<path>...]

描述

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

选项

  • -d / --dir-diff - 将修改的文件复制到临时位置并对它们执行目录 diff。此模式在启动 diff 工具前从不提示。

  • -y / --no-prompt - 在启动 diff 工具前不提示。

  • --prompt - 在每次调用 diff 工具前提示。这是默认行为;提供此选项是为了覆盖任何配置设置。

  • --rotate-to=<file> - 开始显示 <file> 的 diff,它之前的路径将移动到末尾并输出。

  • --skip-to=<file> - 开始显示 <file> 的 diff,跳过它之前的所有路径。

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

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

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

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

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

  • --tool-help - 打印可与 --tool 一起使用的 diff 工具列表。

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

    指定 --no-symlinks 指示 git difftool 创建副本。--no-symlinks 在 Windows 上是默认值。

  • -x <command> / --extcmd=<command> - 指定用于查看 diff 的自定义命令。git-difftool 忽略已配置的默认值,并在指定此选项时运行 <command> $LOCAL $REMOTE。此外,$BASE 在环境中设置。

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

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

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

有关支持的选项的完整列表,请参阅 git-diff(1)

配置

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

本节中此行以上的所有内容未包含在 git-config(1) 文档中。以下内容与那里找到的相同:

  • diff.tool - 控制 git-difftool(1) 使用哪个 diff 工具。此变量覆盖 merge.tool 中配置的值。下面的列表显示了有效的内置值。任何其他值被视为自定义 diff 工具,需要定义相应的 difftool.<tool>.cmd 变量。

  • diff.guitool - 控制在指定 -g/--gui 标志时 git-difftool(1) 使用哪个 diff 工具。此变量覆盖 merge.guitool 中配置的值。下面的列表显示了有效的内置值。任何其他值被视为自定义 diff 工具,需要定义相应的 difftool.<guitool>.cmd 变量。

  • difftool.<tool>.cmd - 指定调用指定 diff 工具的命令。指定的命令在 shell 中评估,并提供以下变量:LOCAL 设置为包含 diff 预映像内容的临时文件名,REMOTE 设置为包含 diff 后映像内容的临时文件名。 有关更多详细信息,请参阅 git-difftool(1) 中的 --tool=<tool> 选项。

  • difftool.<tool>.path - 覆盖给定工具的路径。当您的工具不在 PATH 中时,这很有用。

  • difftool.trustExitCode - 如果调用的 diff 工具返回非零退出状态,则退出 difftool。 有关更多详细信息,请参阅 git-difftool(1) 中的 --trust-exit-code 选项。

  • difftool.prompt - 在每次调用 diff 工具前提示。

  • 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) 套件的一部分

基于 CC BY-NC-SA 3.0 许可发布