设置和配置
获取和创建项目
基本快照
分支与合并
共享和更新项目
检查和比较
打补丁
调试
电子邮件
外部系统
服务器管理
指南
管理
底层命令
- 2.53.0 无变更
-
2.52.0
2025-11-17
- 2.49.1 → 2.51.2 无更改
-
2.49.0
2025-03-14
- 2.45.1 → 2.48.2 无更改
- 2.45.0 无更改
- 2.44.1 → 2.44.4 无更改
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 无更改
-
2.43.0
2023-11-20
- 2.41.1 → 2.42.4 无更改
-
2.41.0
2023-06-01
- 2.38.1 → 2.40.4 无更改
-
2.38.0
2022-10-02
- 2.31.1 → 2.37.7 无更改
-
2.31.0
2021-03-15
- 2.22.1 → 2.30.9 无更改
-
2.22.0
2019-06-07
- 2.13.7 → 2.21.4 无更改
-
2.12.5
2017-09-22
- 2.10.5 → 2.11.4 无更改
-
2.9.5
2017-07-30
- 2.3.10 → 2.8.6 无更改
-
2.2.3
2015-09-04
- 2.1.4 无更改
-
2.0.5
2014-12-17
描述
git difftool 是一个 Git 命令,它允许你使用通用差异工具比较和编辑不同版本之间的文件。git difftool 是 git 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。运行
gitdifftool--tool-help获取有效 <tool> 设置的列表。如果未指定差异工具,git difftool 将使用配置变量
diff.tool。如果未设置配置变量diff.tool,git difftool 将选择一个合适的默认值。您可以通过设置配置变量
difftool.<tool>.path显式提供工具的完整路径。例如,您可以通过设置difftool.kdiff3.path配置 kdiff3 的绝对路径。否则,git difftool 假定工具在 PATH 中可用。git difftool 可以自定义运行替代程序,而不是运行已知的差异工具,通过在配置变量
difftool.<tool>.cmd中指定要调用的命令行。当使用此工具调用 git difftool 时(通过
-t或--tool选项,或通过diff.tool配置变量),将调用配置的命令行,并提供以下变量:$LOCAL设置为包含差异预镜像内容的临时文件的名称,$REMOTE设置为包含差异后镜像内容的临时文件的名称。$MERGED是正在比较的文件的名称。$BASE用于与自定义合并工具命令兼容,其值与$MERGED相同。 - --tool-help
-
打印可与
--tool一起使用的差异工具列表。 - --symlinks
- --no-symlinks
-
当在
--dir-diff模式下运行且比较的右侧内容与工作树中的文件内容相同时,git difftool 的默认行为是创建指向工作树的符号链接。指定
--no-symlinks会指示 git difftool 创建副本而不是符号链接。--no-symlinks是 Windows 上的默认设置。 - -x <command>
- --extcmd=<command>
-
指定一个自定义命令来查看差异。当指定此选项时,git-difftool 会忽略配置的默认值,并运行 <command>
$LOCAL$REMOTE。此外,环境中还会设置$BASE。 - -g
- --gui
- --no-gui
-
当使用
-g或--gui选项调用 git-difftool 时,默认的差异工具将从配置的diff.guitool变量中读取,而不是diff.tool。这可以使用配置变量difftool.guiDefault自动选择。--no-gui选项可用于覆盖这些设置。如果未设置diff.guitool,我们将按merge.guitool、diff.tool、merge.tool的顺序回退,直到找到一个工具。 - --trust-exit-code
- --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.guitool或diff.tool。默认值为false,在这种情况下,必须显式提供--gui参数才能使用diff.guitool。
另请参阅
- git-diff[1]
-
显示提交之间、提交与工作树之间的更改等
- git-mergetool[1]
-
运行合并冲突解决工具以解决合并冲突
- git-config[1]
-
获取和设置仓库或全局选项