gitのdiff-highlightを使い始めた
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