git diff master..lab
它會在兩個分支的尖端之間產生差異。不能想到一個情況,其中git diff master..lab和git diff master ... lab會有所不同
git diff master...lab # notice triple dot
它會產生從兩個分支的共同祖先開始的差異。
我不能認爲任何方案,其中從雙點的結果將是從三個點的結果不同。
git diff master..lab
它會在兩個分支的尖端之間產生差異。不能想到一個情況,其中git diff master..lab和git diff master ... lab會有所不同
git diff master...lab # notice triple dot
它會產生從兩個分支的共同祖先開始的差異。
我不能認爲任何方案,其中從雙點的結果將是從三個點的結果不同。
我知道你已經看到了這一點,但這裏的是從文檔兩個片段:
git diff [--options] <commit>..<commit> [--] [<path>...]
這是同義以前的形式。 (
git diff [--options] <commit> <commit> [--] [<path>...]
)
git diff [--options] <commit>...<commit> [--] [<path>...]
這種形式是,以查看在包含分支和向上改變到第二,起始於兩者的共同祖先。
git diff A...B
相當於git diff $(git-merge-base A B) B
。
我可以看到這可能會混淆你 - ..
和...
符號爲git的差異並不意味着同樣的事情,因爲他們修訂列表(例如,用於git的日誌)做的。
因此,假設我們的歷史是這樣的:
A - B - C - D - E (master)
\
F - G (lab)
的第一個片段告訴我們,git diff master..lab
相當於git diff master lab
,換句話說git diff E G
。這將告訴我們E
和G
之間的直接差異 - 即我們將看到F
,G
的組合和D
和E
的反向補丁的組合。
在另一方面,git diff master...lab
相當於git diff C G
- 它顯示了改變到第二提交(實驗室)來自兩個(主設備和實驗室合併的基礎上,這是C
)的共同祖先開始。我們看到的差異將是F
和G
組合。它不包括D
和E
。
的應用案例三重點符號是,當你想看到所有您在自己的特性分支(實驗室)來完成,這不是合併到主還沒有工作。你不在乎主人還做了什麼 - 你只關心你在主題分支上做的工作。
精彩。很好地解釋。謝謝 – 2010-03-29 18:15:23