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