簡體中文 ▾ 主題 ▾ 最新版本 ▾ git-difftool 最後更新於 2.49.0

名稱

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

概要

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

描述

git difftool 是一個 Git 命令,允許您使用通用差異工具比較和編輯修訂版之間的檔案。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 中找到。

除了執行已知的差異工具之外,git difftool 還可以透過在配置變數 difftool.<tool>.cmd 中指定要呼叫的命令列來定製執行其他程式。

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

--tool-help

列印可與 --tool 一起使用的差異工具列表。

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

指定 --no-symlinks 指示 git difftool 建立副本而不是符號連結。在 Windows 上,--no-symlinks 是預設設定。

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

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

-g
--[no-]gui

git-difftool 使用 -g--gui 選項呼叫時,預設差異工具將從配置的 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]

配置

當差異工具的等效配置變數未定義時,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