Git
English ▾ 主題 ▾ 最新版本 ▾ git-difftool 最後更新於 2.45.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.toolgit 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 建立副本。--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 變數。

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