以前の「diff.external」構成の回答を完了するには上記の:
以下のようヤクブが言及した、Git1.6.3が導入されたのgit difftoolをもともと2008年9月に提案し、:
USAGE = '[--tool=tool] [--commit=ref] [--start=ref --end=ref] [--no-prompt] [file to merge]'
(参照--extcmd
この回答の最後の部分を)
$LOCAL
開始リビジョン$REMOTE
のファイルの内容が含まれ、終了リビジョンのファイルの内容が含まれます。
$BASE
wor内のファイルの内容が含まれています
基本的git-mergetool
にはgit index / worktreeで動作するように変更されています。
あなたがいずれかの上演やunstaged変更し、サイド・バイ・サイド差分ビューアの変化(例えば見てみたいと思いますしている場合は、このスクリプトの通常の使用の場合はxxdiff
、tkdiff
など)。
git difftool [<filename>*]
別の使用例は、同じ情報を見たいが、任意のコミットを比較している場合です(これは、revargの解析がより優れている可能性がある部分です)。
git difftool --start=HEAD^ --end=HEAD [-- <filename>*]
最後の使用例は、現在のワークツリーをHEAD以外のもの(タグなど)と比較する場合です。
git difftool --commit=v1.0.0 [-- <filename>*]
注:Git 2.5以降でgit config diff.tool winmerge
は十分です。
「git mergetool winmerge」を
また、Git 1.7.11以降--dir-diff
、ファイルのペアごとに外部ツールのインスタンスを1回実行する代わりに、2つの一時ディレクトリにデータを入力した後、2つのディレクトリ階層を同時に比較できる外部diffツールを生成するオプションがあります。
Git 2.5より前:
difftool
カスタムdiffツールで構成するための実用的なケース:
C:\myGitRepo>git config --global diff.tool winmerge
C:\myGitRepo>git config --global difftool.winmerge.cmd "winmerge.sh \"$LOCAL\" \"$REMOTE\""
C:\myGitRepo>git config --global difftool.prompt false
PATHのディレクトリ部分に保存されたwinmerge.shを使用して:
#!/bin/sh
echo Launching WinMergeU.exe: $1 $2
"C:/Program Files/WinMerge/WinMergeU.exe" -u -e "$1" "$2" -dl "Local" -dr "Remote"
別のツール(kdiff3、P4Diffなど)がある場合は、別のシェルスクリプトと適切な構成difftool.myDiffTool.cmd
ディレクティブを作成します。
その後、diff.tool
設定を使用してツールを簡単に切り替えることができます。
他の詳細を追加するために、Daveによるこのブログエントリもあります。
(または、この質問についてwinmergeu
オプション)
この設定の関心はwinmerge.sh
スクリプトですです。特別な場合を考慮してカスタマイズできます。
例えば参照デビッド大理石の下の解答を扱う例に:
- 起点または終点のいずれかにある新しいファイル
- 起点または終点で削除されたファイル
以下のようケムメイソンはで言及彼の答え、あなたもすることができます使用して、任意のラッパーを避けるため--extcmd
のオプションを:
--extcmd=<command>
差分を表示するためのカスタムコマンドを指定します。このオプションを指定git-difftool
すると、構成済みのデフォルトが無視されて実行$command $LOCAL $REMOTE
されます。
たとえば、これはどのgitk
ようにdiff
ツールを実行/使用できるかです。