これらの画像はすでに作成しているので、別の回答で使用する価値があると思いましたが、..
(ドット-ドット)と...
(ドット-ドット-ドット)の違いの説明は、manojldsの回答と基本的に同じです。
git diff
通常、このコマンドは、コミットグラフの2つのポイント間のツリーの状態の違いのみを表示します。表記の意味は次のとおりです。..
...
git diff
つまり、git diff foo..bar
とまったく同じgit diff foo bar
です。両方とも、次の2本の枝の先端との間の差を表示しますfoo
とbar
。一方、git diff foo...bar
は、2つのブランチの「マージベース」とのチップの違いを示しますbar
。「マージベース」は通常、これらの2つのブランチ間で共通する最後のコミットであるため、このコマンドはbar
、その間に行われたすべてを無視しながら、作業によって導入された変更を表示しますfoo
。
..
との...
表記について知っておくべきことは、これだけですgit diff
。しかしながら...
...ここでの混乱の一般的な原因は、1つ以上の引数として一連のコミットを期待するようなコマンドで使用した場合、微妙に異なること..
を...
意味しgit log
ます。(これらのコマンドはすべてgit rev-list
、それらの引数からコミットのリストを解析するために使用されます。)
意味..
と...
のためには、git log
以下のようにグラフィカルに示すことができます。
だから、git rev-list foo..bar
あなたのブランチ上のすべてのものを示してbar
枝の上にもありませんfoo
。一方、git rev-list foo...bar
は、のいずれfoo
か bar
、または両方ではないすべてのコミットを示します。3番目の図は、2つのブランチをリストすると、どちらか一方または両方のコミットを取得することを示しています。
とにかく、私はとにかく少し混乱することがわかりました、そして私はコミットグラフ図が役立つと思います:)
mergeたとえば、マージの競合を解決するときにgit diff
、3者間マージが表示されるため、「一般的に」とだけ言います。
..
と...
でgit diff
、その異なる意味でgit log
。