quattro_4's diary

また同じ過ちを繰り返すと気付かんのか!?

Gitのインラインdiff (word-diffの進化型)

gitの--word-diffなどは時々使うことがあると思いますが、さらにその出力を少しアレンジした方法が以下のgit diffオプション。

$ git diff --color-words --word-diff-regex='\\w+|[^[:space:]]'

使いたい場面はあまり多くない気はしますが、主な用途としては、テキスト(HTML含め)の変更のdiffを見るときに使うと見やすいことが多いかと思います。
他では変数や文字の置換など、同じパターンの変更を大量にしたときなど。


以下、railsのドキュメント変更のコミットのdiffを見比べた例

$ git diff --color-words --word-diff-regex='\\w+|[^[:space:]]' 7a0dad2^..7a0dad2

f:id:quattro_4:20120922191249p:plain

$ git diff 7a0dad2^..7a0dad2

f:id:quattro_4:20120922191321p:plain

$ git diff --color-words --word-diff 7a0dad2^..7a0dad2

f:id:quattro_4:20120922192010p:plain


個人的には以下のようにgit aliasを使用しています。
.gitconfig

[alias]
  df = diff
  dc = diff --cached
  dw = diff -w
  dn = diff --name-only
  dwd = diff --word-diff
  diffr = diff --color-words --word-diff-regex='\\w+|[^[:space:]]'