回答:
log
コマンドを使用しているか、diff
コマンドを使用しているかによって異なります。そのlog
場合、それはman git-rev-parse
ドキュメントにあります:
コミットから到達可能なコミットを除外するには、プレフィックス^表記を使用します。たとえば、^ r1 r2は、r2から到達可能なコミットを意味しますが、r1から到達可能なコミットは除外します。
この集合演算は頻繁に出現するため、省略形があります。2つのコミットr1とr2(上記の「リビジョンの指定」で説明されている構文に従って名前が付けられている)がある場合、r2から到達可能なコミットを要求できます。 「r1..r2」。
同様の表記「r1 ... r2」は、r1とr2の対称差と呼ばれ、「r1 r2 --not $(git merge-base --all r1 r2)」として定義されます。これは、r1またはr2のいずれかから到達可能で、両方からは到達できないコミットのセットです。
つまり、基本的には、2つのブランチのいずれか一方にあるが両方にはないすべてのコミットを取得することになります。
そのdiff
場合、それはman git-diff
ドキュメントにあります:
git diff [--options] <commit>...<commit> [--] [<path>...] This form is to view the changes on the branch containing and up to the second <commit>, starting at a common ancestor of both <commit>. "git diff A...B" is equivalent to "git diff $(git-merge-base A B) B". You can omit any one of <commit>, which has the same effect as using HEAD instead.
これは少しあいまいです。基本的には、そのブランチの別のブランチとの違いのみを表示することを意味します。最初に指定したコミットで最後の共通コミットを探し、次に2番目のコミットを比較します。これは、このブランチでの変更に気付かずに、このブランチと比較して、そのブランチで行われた変更を確認する簡単な方法です。
..
幾分簡単である:でgit-diff
場合、それは同じだgit diff A B
とだけで、Bに対してAをdiffをlog
する場合、それはBに記載されていなくA.内のすべてのコミットを示します
..
と...
正確にlogやdiffのためにスワップされています。log A..B
あるものであるBにマージベースから変更diff A...B
ありません
git diff
。
A...B
==を意味しA..B + B..A
ますか?
git log
これは絶対に可能です
..
や...
でコミット範囲を使用しているgit log
場合の違いは、ブランチAとBの場合、
git log A..B
BがAが持っていないすべてのコミットを表示しますが、
git log A...B
Aが持っているコミットとBが持っていないコミット、およびBが持っているAが持っていないコミットの両方を表示します。つまり、AとBの両方が共有するすべてのコミットを除外します。したがって、両方が共有していないコミットのみを表示します。
これはの視覚的表現ですgit log A..B
。ブランチBに含まれ、Aに存在しないコミットは、コミット範囲によって返されるものであり、ベン図では赤で強調表示され、コミットツリーでは青で囲まれています。
これらはの図ですgit log A...B
。両方のブランチで共有されているコミットは、コマンドでは返されないことに注意してください。
...
より便利にする次...
の--left-right
オプションを使用して、どのコミットがどのブランチに属しているかを表示するオプションを使用することで、トリプルドットのコミット範囲をlogコマンドでより便利にすることができます。
$ git log --oneline --decorate --left-right --graph master...origin/master
< 1794bee (HEAD, master) Derp some more
> 6e6ce69 (origin/master, origin/HEAD) Add hello.txt
上記の出力では、に属するコミットにmaster
は接頭辞が付いているのがわかりますが、属する<
コミットにorigin/master
は接頭辞が付いてい>
ます。
いつか私はコミット範囲がどのように機能するかについて独自の説明を追加するかもしれませんgit diff
が、今のところ、Git diff commitのダブルドット「..」とトリプルドット「...」の違いを確認したいと思うかもしれません範囲?。