git diff `git merge-base master branch`..branch
マージベースは、branch
から分岐したポイントmaster
です。
Git diffはこのための特別な構文をサポートしています:
git diff master...branch
他のブランチを取得するため、サイドを入れ替えないでください。branch
から分岐してから何が変わったかを知りたいのですがmaster
、逆ではありません。
ゆるく関連:
..
と...
構文のセマンティクスは他のGitツールと同じではないことに注意してください。で指定した意味とは異なりますman gitrevisions
。
引用man git-diff
:
git diff [--options] <commit> <commit> [--] [<path>…]
これは、任意の2つの間の変更を表示するためのもの<commit>
です。
git diff [--options] <commit>..<commit> [--] [<path>…]
これは前のフォームと同義です。一方<commit>
を省略すると、HEAD
代わりにを使用するのと同じ効果があります。
git diff [--options] <commit>...<commit> [--] [<path>…]
このフォームは<commit>
、両方の共通の祖先から始まり、2番目までのブランチの変更を表示するためのもの<commit>
です。「git diff A...B
」は「」と同等git diff $(git-merge-base A B) B
です。のいずれかを省略できます<commit>
。これは、HEAD
代わりにを使用するのと同じ効果があります。
何かエキゾチックなことをしている場合に備えて、<commit>
「..」表記を使用する最後の2つの形式を除いて、上記の説明のすべてがであることに注意してください<tree>
。
スペルのより完全なリストについては、の<commit>
「改訂の指定」セクションを参照してくださいgitrevisions[7]
。ただし、「diff」は2つのエンドポイントを比較することであり、範囲ではありません。範囲の表記( " <commit>..<commit>
"および " <commit>...<commit>
")は、の「SPECIFYING RANGES」セクションで定義されている範囲を意味しませんgitrevisions[7]
。
git diff master..branch
。git diff master..
ブランチにいる場合は、に短縮できます。r1..r2
以下のための構文は短く、^r1 r2
手段は「から下降することを私にすべてを示しているr2
とはから到達可能ではありませんr1
」。git help gitrevisions
使用できるさまざまな構文についての情報があります。