既然我已經創建了這些圖片,我想這可能是值得的另一種回答使用它們,雖然..
之間的差異的說明(dot-dot)和...
(dot-dot-dot)基本上與manojlds's answer中的相同。
命令git diff
通常只顯示提交圖中恰好兩個點之間樹的狀態之間的差異。的..
和...
符號在git diff
具有以下含義:
換句話說,git diff foo..bar
是完全一樣git diff foo bar
;兩者都會向您顯示兩個分支foo
和bar
的提示之間的區別。另一方面,git diff foo...bar
將顯示兩個分支的「合併基礎」和bar
的提示之間的區別。 「合併基礎」通常是這兩個分支之間共同的最後一個提交,因此此命令將顯示您在bar
上的工作所做的更改,同時忽略foo
同時完成的所有工作。
這就是你需要知道的..
和...
符號git diff
的全部內容。然而...
...混亂的常見原因是在這裏,在諸如git log
一個命令,預計一組提交的一個或多個參數的使用時..
和...
意味着微妙的不同的東西。 (這些命令所有最終使用git rev-list
解析從它們的參數提交列表)
的..
和...
爲git log
含義可以圖形方式顯示如下:
所以,git rev-list foo..bar
向您顯示分支bar
上的所有內容,該分支也不在分支foo
上。另一方面,git rev-list foo...bar
顯示foo
或bar
或都不是的所有提交。第三個圖表顯示如果列出兩個分支,您將獲得其中一個或兩個分支中的提交。
嗯,我發現所有的有點混亂,反正我覺得犯圖形圖表幫助:)
¹我只能說「一般」,因爲解決當合並衝突,例如,git diff
會告訴你三方合併。
雖然這個問題是不是重複,[這個答案](http://stackoverflow.com/questions/5256249/git-diff-doesnt-show -enough/5257065#5257065)在'git diff'中顯示'..'和'...'的含義以及它們在'git log'中的不同含義。 –
可能的重複[Git提交範圍中的雙點「..」和三點「...」之間的區別是什麼?](http://stackoverflow.com/questions/462974/what-are-the -differences-between-double-dot-and-triple-dot-in-git-com) – chharvey