diffでカラー表示したいけど、コメント行はいらない
やりたいこと
ファイルの差分をもっと見やすくしたい。
git diffを使うとカラー表示できるけど、コメント行はいらない。
調べると割と困っている人がいるようでしたが、なかなか決定的な解決方法が見つかりませんでした。git diffの-Gオプションを使う方法を試したものの、消えるコメントと消えないコメントがありました。今回自分が比較したかったファイルは # を含む行は全てコメントであったため、以下のような方法で対処できました。
git --no-pager diff --color=always -w hoge huga | grep -v --color=always '#'
git diffの--color=alwaysが、パイプで出力するときもエスケープシーケンスを維持し、grepの--color=alwaysは標準出力するならなくていいです。不自然にコメント行だけに抜けるのが難点ですが、コメントに埋もれなくなり差が比較しやすくなりました。
bash関数とか作っておくと便利です。
function cdiff () {
git --no-pager diff --color=always -w $1 $2 |grep -v --color=always '#'
}
追記:
だめでした!
比較後にgrepでコメント行を削除すると、コメント/アンコメントした箇所がわからなくなるという、致命的な問題があることがわかりました。残念。