git log -p や git diff などで差分を見るとき、行単位での追加/削除は表示されるが、行の中のどこが変わったのかは表示してくれない。例えば行の中の一単語を書き換えただけで、しかもその行が長い場合、どこに差分があるのか目で探すのが結構大変だった。
しかし先日、 diff-highlight という便利なモジュールが提供されていることを知り、早速導入してみた。
diff-highlightとは
gitコマンドの、行単位での差分を探す動作のポストプロセスとして実行され、同じ行の中の差分をハイライトしてくれる。
例えば、行の一部分だけ変えたときの git diff は、今までこんな感じだった。

それがこうなる。差分がわかりやすい。

diff-highlightの設定
この機能は gitコマンドに同梱されているため、インストールは不要。設定作業のみで使える。
まず .gitconfig に以下を追記する。
[pager]
log = diff-highlight | less
show = diff-highlight | less
diff = diff-highlight | less
ただしこの設定を有効にするには、 diff-highlight 自体にPATHを通す必要がある。
Macのhomebrewで git をインストールした場合、バージョンを更新すると diff-highlight のディレクトリも変わってしまう。その場合、 git-core のシンボリックリンクに対して /usr/local/bin からさらにシンボリックリンクを貼るという方法で回避できる。
sudo ln -s /usr/local/share/git-core/contrib/diff-highlight/diff-highlight /usr/local/bin/diff-highlight
この方法は以下の記事で知った。 qiita.com
これで diff-highlight が使えるようになる。 .gitconfig に設定を加えたことで、 git log や git show コマンドでも diff-highlight が有効化されている。
また、普段 tig を使っている場合、2.2.1以降であれば .tigrc で以下の設定をすると、 tig でも diff-highlight が使えるようになる。
set diff-highlight = true