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でコメント行を削除すると、コメント/アンコメントした箇所がわからなくなるという、致命的な問題があることがわかりました。残念。


いいなと思ったら応援しよう!