2012-02-29 84 views
0

這裏的情景:儘管合併提交,我如何看到乾淨的git diff?

開發一個正在改變自己的本地倉庫,然後使供審查這些變化之前,不會拉,而不是獲取和重訂,所以他犯包含一個巨大的合併結束他的變化加上自他上次拉動以來對遠程存儲庫所做的更改。

我想取回他的更改,只能看到他更改了

比方說,我們在一個分支叫主的工作,並從他的倉庫提取後,我這樣做:

git的差異主德瓦/主

我會看到一個巨大的混亂的差異,做實際上並不代表分支之間的差異 - 我看到了合併提交中的所有文件,其中大部分文件實際上並不相同。

所以,我怎麼得到的正是開發商A實際上改變了乾淨的差異,並在那裏爲我清理東西了,以至於當我合併了他的變化,合併提交消失的方式,我有一個乾淨的歷史?

回答

1

你想git diff master...deva/master,根據git diff的手冊頁是git diff $(git merge-base master deva/master) deva/master,或您的分支點分歧點和「他的」分支點之間的差異。

當然,從某種意義上說,git diff master deva/master輸出實際上是「他改變了什麼」,因爲它是你現在的HEAD和他之間的區別......它並不是說謊。

從技術上講,如果他們是「他」合併的其他分支的一部分,這仍然可以包括「他沒有改變」的事物。如果你想排除這些提交,你將不得不通過並生成組合差異。

+0

但是,這樣做還是不會讓我看到合併提交中的文件,因爲我一直回到共同的祖先,它缺少那些提交? – 2012-03-01 01:30:26

+0

@EricZBeard如果你想跳過一次提交,你將不得不去差異跳躍。 – Borealid 2012-03-01 01:43:54