簡體中文 ▾ 主題 ▾ 最新版本 ▾ git-difftool 上次更新於 2.52.0

名稱

git-difftool - 使用通用 diff 工具顯示更改

概要

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>

開始顯示給定路徑的 diff,它之前的路徑將移動到末尾並輸出。

--skip-to=<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 中找到。

而不是執行已知的 diff 工具之一,git difftool 可以透過在配置變數 difftool.<tool>.cmd 中指定要呼叫的命令列來定製以執行替代程式。

git difftool 使用此工具呼叫時(無論是透過 -t--tool 選項還是 diff.tool 配置變數),配置的命令列將使用以下可用變數呼叫:$LOCAL 設定為包含 diff 前像內容的臨時檔名,$REMOTE 設定為包含 diff 後像內容的臨時檔名。$MERGED 是正在比較的檔名。$BASE 是為與自定義合併工具命令相容而提供的,並且與 $MERGED 的值相同。

--tool-help

列印一個可以使用 --tool 的 diff 工具列表。

git difftool--dir-diff 模式下執行時,當比較的右側與工作樹中的檔案內容相同時,預設行為是建立指向工作樹的符號連結。

指定 --no-symlinks 會指示 git difftool 建立副本。在 Windows 上,--no-symlinks 是預設設定。

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

指定用於檢視 diff 的自定義命令。git difftool 會忽略配置的預設值,並在指定此選項時執行 <command> $LOCAL $REMOTE。此外,$BASE 會在環境中設定。

-g
--gui
--no-gui

git difftool 使用 -g--gui 選項呼叫時,將從配置的 diff.guitool 變數讀取預設 diff 工具,而不是 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] 獲取支援選項的完整列表。

配置

git difftool 在 difftool 等效項未定義時,會回退到 git mergetool 配置變數。

本節中此行以上的所有內容均未包含在 git-config[1] 文件中。以下內容與該文件中的內容相同

diff.tool

控制 git-difftool[1] 使用哪個 diff 工具。此變數覆蓋 merge.tool 中配置的值。下面的列表顯示了有效的內建值。任何其他值都被視為自定義 diff 工具,並且需要定義相應的 difftool.<tool>.cmd 變數。

diff.guitool

控制 git-difftool[1] 在指定 -g/--gui 標誌時使用的 diff 工具。此變數覆蓋 merge.guitool 中配置的值。下面的列表顯示了有效的內建值。任何其他值都被視為自定義 diff 工具,並且需要定義相應的 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

指定呼叫指定 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] 套件的一部分