@kyanny's blog

My life. Opinions are my own.

git diff --diff-filter で差分に出す内容を選択する

簡潔なタイトルが思い浮かばないけど、 --diff-filter オプションを使うとこんなことができる:

「Rails 3.0.9 リリース時点のコードと、 3.0.4 のセキュリティ fix 用ブランチの間の差分を見たい。ただし、 3.0.9 には存在せず、 3-0-4-security ブランチにのみ存在する変更だけ見たい」それ --diff-filter=A でできるよ。 github.com/rails/rails を git clone してから以下のコマンドを試してみて。 --diff-filter ありとなしで結果が違うのが一目瞭然。

$ git diff --stat --diff-filter=A v3.0.9..remotes/origin/3-0-4-security

実際にとってみた差分はこちらに。 https://gist.github.com/1051105

具体的にどういうとき役にたつの?ふつうの diff じゃダメなの?と聞かれると返答に困るのだけど(説明が難しい)あるバージョンから分岐した旧バージョンのメンテナンス用ブランチ、みたいなのがあって、 master と比較してそのブランチだけに存在するコミット(というか差分)だけを見たい、という場合。ふつうの diff をとると master に存在してメンテナンス用ブランチにはない変更、要するに新機能追加とか普通の開発で増えたコード、が「減った差分」として表示されてしまうので、いっぱいあると見づらいよね、ということ。用途は限られるけどこういうこともできるよ、というメモ。