まだマスターにマージされていないブランチのすべての変更の差分が欲しいのです。
私は試した:
git diff master
git diff branch..master
git diff branch...master
ただし、これらの各ケースでは、diffにはmasterのコンテンツが含まれていますが、それはまだ私のブランチにマージされていません。
まだブランチにマージされていないmasterの変更を除外して、ブランチとmasterの間で差分をとる方法はありますか?
git diff `git merge-base master branch`..branch
Merge base はbranch
name__がmaster
name__から分岐した点です。
Git diffはこのための特別な構文をサポートしています。
git diff master...branch
あなたは辺を入れ替えてはいけません、それであなたは他の枝を手に入れるでしょう。 branch
name__から何が変わったのか知りたいのですが、master
name__とは異なっていました。
ゆるい関係:
..
および...
構文は他のGitツールと同じ意味を持たないことに注意してください。 man gitrevisions
で指定されている意味とは異なります。
引用 man git-diff
:
git diff [--options] <commit> <commit> [--] [<path>…]
これは任意の2つの
<commit>
間の変更を見るためです。
git diff [--options] <commit>..<commit> [--] [<path>…]
これは前の形式と同義です。片側の
<commit>
が省略された場合、代わりにHEAD
name__を使用するのと同じ効果があります。
git diff [--options] <commit>...<commit> [--] [<path>…]
このフォームは、2つの
<commit>
の共通の先祖から始めて、2番目の<commit>
を含むブランチの変更を表示するためのものです。 "git diff A...B
"は "git diff $(git-merge-base A B) B
"と同等です。<commit>
のいずれか1つを省略することもできます。これは、代わりにHEAD
name__を使用するのと同じ効果があります。珍しいことをしているのであれば、 ".."表記を使う最後の2つの形式を除いて、上記の説明の中のすべての
<commit>
はどんな<tree>
でも構いません。
<commit>
をつづる方法のより完全なリストについては、gitrevisions[7]
の「リビジョンの指定」セクションを参照してください。ただし、 "diff"は範囲ではなく2つの端点を比較するためのもので、範囲表記( "<commit>..<commit>
"と "<commit>...<commit>
")はgitrevisions[7]
の "SPECIFYING RANGES"セクションで定義されている範囲を意味しません。
これは私のために働いたものです:
git diff Origin/master...
これは私が現在選択しているローカルブランチとリモートマスターブランチの間の変更のみを表示し、マージコミットから来た私のローカルブランチのすべての変更を無視します。