AI時代に備えて、git diff を見直す

TL;DR

最近 Claude Code を使うことが増えて、AI が書いたコードを確認する機会も多くなった。
自分のコードだけであれば、素の git diff で十分だと思っていたが、他人 (AI) が書いたそれなりのボリュームだと見切れないことが増えてきたので、dandavison/delta を導入して差分表示を改善した。

背景

プライベートでは Claude Code にコードを書いてもらうことがめっぽう増えた。
まだまだ手直しが必要になる場面もあるが、少なくとも 0 から自分で書くことはほとんどなくなった。
単純に指示や CLAUDE.md が十分ではないだけなことも多い。
(それをちゃんと整備する時間が取れていないのでサボってる)

自分で書いたコードを確認する場合には、ほぼ素の git diff で済むことが多かった。
しかし AI の書いたそれなりのボリュームのコードを確認する場面には、git diff だけでは見づらいことが多い。

そこで git diff を見直してみることにした。

色々調べた結果、dandavison/delta を導入することにした。

決め手は以下の 3つ

設定内容

.gitconfig の設定

[core]
    pager = delta

[interactive]
    diffFilter = delta --color-only

[delta]
    navigate = true # n/N で移動できるようになる
    side-by-side = true # side-by-side 表示
    keep-plus-minus-markers = true # + - のマーカーを残す
    line-numbers = true # 行番号を表示

    dark = true 

これだけですでにいい感じになる

theme の設定

せっかくならと思いテーマの設定をあれこれいじってしまった

以下の設定で上記のような見た目になり、大満足となった
※ 細かい部分はなんで動くのかよくわかってない
ghostty-org/ghostty を使ってるので設定が同じでも完全に同じ見た目にはならないかもしれない

[delta "my-theme"]
    # based on "mantis-shrimp-lite" and  "chameleon"
    # features
    dark = true
    side-by-side = true
    keep-plus-minus-markers = true
    line-numbers = true
    # general
    ## diff でその行が削除された場合や新規に追加された場合で色が適用されなかったので個別に上書きしている
    map-styles = \
       bold purple => bold brightred, \
       bold cyan => bold brightgreen
    # file decorations
    file-added-label = [+]
    file-copied-label = [==]
    file-modified-label = [*]
    file-removed-label = [-]
    file-renamed-label = [->]
    file-style = brightwhite bold
    file-decoration-style = "#434C5E" ul
    # commit
    commit-style = yellow bold italic
    commit-decoration-style = yellow ul
    # diff decorations
    hunk-header-style = omit
    plus-style = brightgreen bold
    plus-emph-style = brightgreen bold
    plus-non-emph-style = bold
    minus-style = brightred bold
    minus-emph-style = brightred bold
    minus-non-emph-style = bold
    ## line numbers
    line-numbers-left-format = " {nm:>3} │"
    line-numbers-left-style = "#434C5E"
    line-numbers-right-format = " {np:>3} │"
    line-numbers-right-style = "#434C5E"
    line-numbers-minus-style = brightred italic black
    line-numbers-plus-style = brightgreen italic black
    line-numbers-zero-style = "#434C5E" italic

ちなみに以下の設定も別途必要になるので注意
設定の詳細は Custom themes の章を参照してほしい

[include]
    path = /path/to/themes.gitconfig

[delta]
    features = my-theme

まとめ

AI 時代になってコードレビューの重要性が増している中で、 git diff を見直して dandavison/delta を導入した。
設定も簡単だし、見た目のカスタマイズもいろいろとできて大満足となった。