..
(ドットドット)と...
(ドットドットドット)の違いの説明は基本的にmanojldsの回答と同じですが、私はすでにこれらの画像を作成しているので、別の回答でそれらを使用する価値があるかもしれないと思いました。
コマンドgit diff
は通常¹、コミットグラフの正確に2つのポイント間のツリーの状態の違いのみを表示します。の..
および...
表記にgit diff
は、次の意味があります。
# Left side in the illustration below:
git diff foo..bar
git diff foo bar # same thing as above
# Right side in the illustration below:
git diff foo...bar
git diff $(git merge-base foo bar) bar # same thing as above

つまり、は;git diff foo..bar
とまったく同じです。どちらも、2つのブランチのヒントとgit diff foo bar
の違いを示します。一方、2つのブランチの「マージベース」との先端の違いを示します。「マージベース」は通常、これら2つのブランチに共通する最後のコミットであるため、このコマンドは、その間に行われたすべてを無視して、作業によって導入された変更を表示します。foo
bar
git diff foo...bar
bar
bar
foo
..
のとの...
表記について知っておく必要があるのはこれだけですgit diff
。でも...
...ここでの一般的な混乱の原因は、コミットのセットを1つ以上の引数として期待するようなコマンドで使用すると、微妙に異なること..
を意味することです。(これらのコマンドはすべて、引数からコミットのリストを解析するために使用することになります。)...
git log
git rev-list
との意味は..
、次のようにグラフィカルに表示できます。...
git log

したがって、ブランチ上にないgit rev-list foo..bar
すべてのものをブランチ上に表示します。一方、は、またはのいずれかにあるすべてのコミットを表示しますが、両方にはありません。3番目の図は、2つのブランチをリストすると、一方または両方にあるコミットを取得することを示しています。bar
foo
git rev-list foo...bar
foo
bar
まあ、とにかく、私はすべてが少し混乱していることに気付きます、そして私はコミットグラフ図が役立つと思います:)
¹たとえば、マージの競合を解決するときにgit diff
3方向のマージが表示されるため、「通常」とだけ言います。