deltaは、シンタックス・ハイライトが実装されたRust製のページャーです。Gitの差分表示を拡張する機能が豊富にあり、GitHubやGitLabに類似する画面をターミナルで構成できます。2019年7月に最初のリリース(v0.0.1)があり、2024年現在でも開発が続けられています。

この記事では、Gitの差分に関連するdeltaの基本的な機能を紹介します。以下、次の環境が前提となります。

  • delta v0.17.0 (執筆時点での最新バージョン)
  • git 2.45.2
  • zsh 5.9 (x86_64-apple-darwin23.0) & Oh My Zsh

インストール

インストール手順はユーザーマニュアルの4章にあります。多くの場合、パッケージ名がdeltaではなくgit-deltaであることに注意してください(ChocolateyやScoopなどの一部のパッケージマネージャではパッケージ名がdeltaとなります)。筆者はHomebrewでインストールしました。

$ brew install git-delta

基本的な使い方

Gitのページャーとしてdeltaを指定すれば基本的な機能が使えるようになるため、~/.gitconfigにページャーの設定を追加します。

[core]
    pager = delta

差分の表示

deltaがGitのページャーとして指定されている状態でgit diffを実行すると、シンタックス・ハイライトが効いた差分が表示されます。

git diff with delta

また、次のような操作でも同様に表示されます。

  • git show(コミットやタグなどのオブジェクトを表示する)
  • git log -p(コミット履歴とその差分を表示する)
  • git stash show -p(スタッシュとその差分を表示する)

画面分割による差分の表示

deltaは変更前と変更後を左右に並べて表示する形式(Side-by-side view)を提供しています。有効化するには、delta.side-by-sidetrueに設定します。

[delta]
    side-by-side = true

有効化すると、次の画像のように画面が分割されて表示されます。

Side-by-side view

インタラクティブな操作における差分の表示

git diffgit showなどの操作に加えて、git add -pなどのインタラクティブな操作に対してもシンタックス・ハイライトを効かせることができます。有効化するには、.gitconfiginteractive.diffFilterの設定を追加します。

[interactive]
    diffFilter = delta --color-only

ダークモードとライトモード

deltaは使用しているターミナルの設定に応じてデフォルトカラーが指定される仕組みがありますが、明示的にdarkまたはlightを設定することもできます。次の例はlightを指定する設定です。

[delta]
    light = true

開発状況

deltaはDan Davisonによって開発されています。deltaには100人以上のコントリビューターがおり、v0.0.1のリリースから執筆時点(2024年6月)までに計55回のリリースがありました。GitHubでは21.2kのstarを獲得しています。