
Difftastic とは
Difftastic は、リッチな diff 表示を行うコマンドラインツールです。
行単位の変更差分ではなく、コードを解析(50超の言語に対応しています)することで、構文ツリーの変更差分を確認できます。

インストール
MacOS の場合は brew から
brew install difftastic
Windows の場合は winget でインストールできます。
winget add difftastic
インストール後は difft コマンドで利用可能となります。
difft --version Difftastic 0.62.0
ファイル同士の比較は以下のように指定します。
difft sample_files/simple_1.js sample_files/simple_2.js
ディレクトリ同士の比較は以下のように指定します。
difft sample_files/simple_1.js sample_files/simple_2.js
が、通常は Git の diff ツールとして利用することになるでしょう。
Git での設定
エイリアスを登録して使うか、外部 diff ヘルパー difftool に登録して使うかの2つの方法があります。
difftastic をデフォルトの diff ツールとして使うと、path として使いたい時などに --no-ext-diff オプションを指定する必要があったりするので、エイリアス登録して使った方が混乱ないかなと思います。
エイリアス設定
ユーザルート .gitconfig に以下のようにエイリアス設定を行います。
[alias]
ddiff = -c diff.external=difft diff
以下のように通常の diff の代わりに使うことができます。
git ddiff
git log -p (各コミットで反映された変更点を表示)と、git show(コミットのログメッセージとテキスト差分を表示) でも difftastic による表示を行うことができます。
エイリアス名を短縮して以下のように登録すると良いでしょう。
[alias]
dl = -c diff.external=difft log -p --ext-diff
ds = -c diff.external=difft show --ext-diff
dft = -c diff.external=difft diff
difftool 登録
外部 diff ヘルパー difftool に登録して使う場合は以下のように設定します。
[difftool "difftastic"]
cmd = difft "$MERGED" "$LOCAL" "abcdef1" "100644" "$REMOTE" "abcdef2" "100644"
[difftool]
prompt = false
[pager]
difftool = true
[diff]
tool = difftastic

