自動生成されたファイルなど、diff で無視したいケースはままあると思う。
diff(1) だと --exclude(-x) でそれができる。
トピックブランチで比較的大きな変更をしていて、特定ディレクトリ以下にしか差分がないことを確認したかったんだけど、git-diff にはそういったオプションが無いらしい。
調べてみると filterdiff
がよさそうだった。git-diff 以外にも patch ファイルとかにも使えるしね。
インストール
filterdiff は patchutils に含まれる。
HomeBrew なら
brew install patchutils
ついでに colordiff も入れておく
brew install colordiff
使ってみた
git diff develop..master | filterdiff -p1 -x 'app/*'
-x で無視したいファイル/ディレクトリを指定している。gitignore みたいなワイルドカード指定もできる。
-p1 は PATH の頭を削るためのおまじない。a/, b/ を削っている。
diff --git a/.gitignore b/.gitignore
index 887682e..abfd4a4 100644
--- a/.gitignore
+++ b/.gitignore
ちょっと味気ないよね
そのままだとハイライトされなくて寂しいので colordiff を組み合わせる:
git diff develop..master | filterdiff -p1 -x 'app/*' | colordiff
less 通したいなぁ
流れてしまってスクロールさせるのめんどくさいよね。
そのまま less に渡すと白黒に戻ってしまうから -R オプションを渡す。
ついでに、-X で、git diff のようにページャを閉じても、最後の表示がコンソールに残るようになる。
git diff develop..master | filterdiff -p1 -x 'app/*' | colordiff | less -RX