3 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊
由于我已經(jīng)創(chuàng)建了這些圖像,我認(rèn)為在另一個(gè)答案中使用它們可能是值得的,盡管..
(點(diǎn) - 點(diǎn))和...
(點(diǎn) - 點(diǎn) - 點(diǎn))之間的差異的描述與manojlds的答案基本相同。
該命令git diff
通常只顯示提交圖中兩個(gè)點(diǎn)之間樹的狀態(tài)之間的差異。在..
和...
中符號(hào)git diff
的含義如下:
換句話說,git diff foo..bar
完全一樣git diff foo bar
; 兩者都將告訴你兩個(gè)分支的末端之間的差異foo
和bar
。另一方面,git diff foo...bar
將顯示兩個(gè)分支的“合并基礎(chǔ)”和尖端之間的區(qū)別bar
?!昂喜⒒A(chǔ)”通常是這兩個(gè)分支之間的最后一個(gè)共同提交,因此該命令將向您顯示您的工作bar
所引入的更改,同時(shí)忽略同時(shí)完成的所有操作foo
。
這就是你需要了解的所有內(nèi)容..
和...
符號(hào)git diff
。然而...
...混亂的常見原因這里是..
和...
一個(gè)命令中使用時(shí),如意味著微妙的不同的東西git log
期望一個(gè)組提交的一個(gè)或多個(gè)參數(shù)的。(這些命令最終都git rev-list
用于解析其參數(shù)中的提交列表。)
..
and和...
for 的含義git log
可以用圖形方式顯示如下:
因此,git rev-list foo..bar
向您顯示分支bar
上不存在的所有內(nèi)容foo
。另一方面,git rev-list foo...bar
向您顯示所有提交foo
或 兩者中的提交bar
,但不是兩者。第三個(gè)圖表只顯示如果列出兩個(gè)分支,則會(huì)獲得其中一個(gè)或兩個(gè)分支的提交。
好吧,無論如何,我發(fā)現(xiàn)有點(diǎn)令人困惑,我認(rèn)為提交圖表幫助:)
1我只說“通?!?,因?yàn)樵诮鉀Q合并沖突時(shí),例如,git diff
會(huì)向您顯示三向合并。

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊
git diff foo master
foo和master的top(head)提交之間的差異。
git diff foo..master
做同樣事情的另一種方式。
git diff foo...master
從git merge-base foo master
foo和master 的共同祖先()到master的tip。換句話說,僅顯示master分支自fob的共同祖先以來引入的更改。
GitHub的這個(gè)例子解釋了何時(shí)使用這兩個(gè):
例如,如果您創(chuàng)建一個(gè)'dev'分支并向函數(shù)添加一個(gè)函數(shù),那么返回到您的'master'分支并從README中刪除一行,然后運(yùn)行如下所示的代碼:
$ git diff master dev它會(huì)告訴您從第一個(gè)文件添加了一個(gè)函數(shù),并在README中添加了一行。為什么?因?yàn)樵诜种?,README仍然具有原始行,但是在'master'上你已經(jīng)刪除它 - 所以直接比較快照看起來像'dev'添加它。
你真正想要比較的是你的分支分歧后'dev'的變化。要做到這一點(diǎn),Git有一個(gè)很好的小速記:
$ git diff master...dev
- 3 回答
- 0 關(guān)注
- 1827 瀏覽
添加回答
舉報(bào)