Corredor

ウェブ、プログラミングの勉強メモ。

git diff を1文字単位で出力する

エンジニアのためのGitの教科書 実践で使える!バージョン管理とチーム開発手法

エンジニアのためのGitの教科書 実践で使える!バージョン管理とチーム開発手法

  • 作者: 株式会社リクルートテクノロジーズ,株式会社リクルートマーケティングパートナーズ,河村聖悟,太田智彬,増田佳太,山田直樹,葛原佑伍,大島雅人,相野谷直樹
  • 出版社/メーカー: 翔泳社
  • 発売日: 2016/01/19
  • メディア: Kindle版
  • この商品を含むブログ (1件) を見る

git diff で差分を見られるが、1文字の差分でも行単位に差分が見えてしまうので、少々使いづらい。

そこで、--word-diff というオプションを渡すと、単語単位で差分を表示してくれるようになる。

$ git diff --word-diff

コレでも十分見やすくはなったが、a = 1;a = 2; といった行の差分を見た時に、a = 1;2; というように、変更が入っていないセミコロン ; まで差分かのように見えてしまう場合がある。

もう少し調べてみると、以下のような正規表現をオプションで渡してやることで、本当に差分がある 12 部分だけを色付けしてくれるように設定できた。

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

~/.bashrc でエイリアスに指定する時は、シングルクォートをエスケープして以下のように指定すれば良い。

# エイリアス「gdfw」として定義する
alias gdfw='git diff --color-words --word-diff-regex='\''\\w+|[^[:space:]]'\'''

neos21.hatenablog.com

~/.gitconfig にエイリアスを指定する場合は以下のように書けば良い。

# Git エイリアス「git dfw」として定義する
[alias]
  dfw = diff --color-words --word-diff-regex='\\w+|[^[:space:]]'