git diff
顯示你問它來顯示,這是兩次提交你給它的區別是什麼。
要了解如何查看「只有您自己的更改」,您必須瞭解上游更改進入合併歷史中的哪個位置。在以某種圖形表示方式查看歷史記錄時,可以輕鬆完成此操作。通過使用gitk
或git log --graph --oneline --decorate
或其他您喜歡的歷史瀏覽器。
假設你已經在發展的兩條平行線(你和上游)是合併一個「簡單」的情況下,你的歷史將是這個樣子:
... <- A <- B <- U1 <- U2 <- ... <- Un <-+- C <-- D <-- ....
^ |
`--- Y1 <- Y2 <- ... <- Ym <-'
在此表示,箭頭從去孩子向父母承諾,所以左側是較舊的承諾,而右側是較新的承諾。 (您的分支小費位於C的右側)。 U*
提交代表上游更改,Y*
提交您自己的提交,但這並不相關。
用於這些提交的名稱是符號;實際上在repo中調用diff時,您需要使用實際的ref名稱(標籤或分支,如果它們存在於正確的位置,或者否則執行SHA)。
要查看所發生的合併(該Y*
提交)你自己的一部分所有累積的變化,你可以使用
git diff B Ym
也就是說,合併基礎之間的差異(最後的共同承諾)和您最近提交合併前。
你嘗試過包括實際合併提交的方式(C
在這個例子中),其中已經包含了所有的上游更改,因爲該點的合併已經發生了(這實際上是一種合併的點提交)。
合併之前和合並之後某處的差異(包括合併提交)將包含合併兩側的所有更改。
好答案!我還建議OP不要使用帶「git diff」的「..」和「...」sytnax:這些點已經被添加來使'git diff'的操作類似於'git log',但是這種相似性是誤導性的與後者相反,'git diff'總是隻對兩個版本進行操作,而不是對它們的範圍(這些點表示)。所以使用'git diff ONE TWO'總是更清晰。正如Nevik正確地指出的那樣,'git diff'只是在文本上比較兩個修訂版,因此不知道「我們」的更改。 – kostix 2013-04-10 15:32:57
非常感謝你:) – 2013-04-14 17:29:38