行単位ではなく文字単位でdiffを見たい。
–word-diff-regexオプションを使う
英語などの空白文字で単語が分けられる言語は、git diff –word-diffを使えばいい。
日本語なら、git diffに–word-diff-regexオプションをつければいい。
% git diff --word-diff-regex="\w+"
こうすると日本語でも化けずに比較できた。でも、たまに差分が表示されない行がでる。
毎回–word-diff-regexオプションを付けるのが面倒なので、適当なパスの通っている場所にgit-chardiffというシェルスクリプトを作って実行権限付けた。
~/bin/git-chardiff
#!/bin/sh
git diff --word-diff-regex="\w+" $@
gitは頭に「git-」と付く実行可能コマンドをサブコマンドとして使ってくれるので、これで
% git chardiff
で文字単位のdiffが見れる。
なおdocdiffを使う方法もあるけどRuby2.0だと動かなかった。
diff-highlightを使う
参考:
Git の diff を美しく表示するために必要なたった 1 つの設定 #git – 詩と創作・思索のひろば (Poetry, Writing and Contemplation)
これは通常のgit diffの行単位のdiffに、文字単位の変更もハイライトするもの。
でもこっちは日本語が化ける部分がある。
homebrewでgitを入れて、
contrib/diff-highlightを使う
% brew install git
% ln -s /usr/local/Cellar/git/1.9.1/share/git-core/contrib/diff-highlight/diff-highlight /usr/local/bin/diff-highlight
~/.gitconfig に追加
[color]
ui = auto
[pager]
log = diff-highlight | less
show = diff-highlight | less
diff = diff-highlight | less
ふつうに
% git diff
すると文字単位の変更がハイライトされる