自動合併當「混帳拉」後,你會得到消息:查看文件由混帳
Merge made by the 'recursive' strategy.
你怎麼能知道哪些人在衝突中的文件?我希望能夠確認如何更改我的文件所做的git ...
自動合併當「混帳拉」後,你會得到消息:查看文件由混帳
Merge made by the 'recursive' strategy.
你怎麼能知道哪些人在衝突中的文件?我希望能夠確認如何更改我的文件所做的git ...
小心單詞「衝突」:如果git merge
步驟git pull
自動完成,或者有沒有任何衝突 ,或者你有git rerere
打開,並且git re使用re有線re解決衝突的解決方案。我嫌疑人你的意思是「我如何看到git從合併的origin/branch
部分帶來什麼變化」。
也就是說,假設在git pull
的git fetch
步驟之後提交圖表看起來像這樣。這裏每一個字母代表一個承諾,我已經假設你自從上次你和你的上游是在同步做兩次提交(A
和B
),和他們做了兩次提交(C
和D
):
A - B <-- branch
/
... - o - o
\
C - D <-- origin/branch
此時您的git pull
完成了其後半部分git merge
,以產生新的合併提交。讓我們把這種M
:
A - B
/ \
... - o - o M <-- branch
\ /
C - D <-- origin/branch
想必你知道你做什麼樣的變化,你希望看到什麼樣的變化M
了,當B
(最近的更改)進行比較。
爲了找到答案,您首先找到提交B
的SHA-1 ID,然後您可以簡單地運行git diff <id-of-B> branch
。 (名字branch
認定犯M
容易,所以它的B
,你需要找到,問git的這種差異。)
實際上,有找到B
的ID的簡單方法。 B
始終是M
的「第一位父母」。像M
這樣的合併提交至少有兩個父提交,並且第一個在您(或git pull
)運行git merge <whatever>
之前,一個是您的分支的小費。 (第二父提交D
這裏,因爲這是你合併-in。)的有Git中一個特殊的語法參照第一父母,實際上是兩個這樣的語法,但允許使用^
語法現在:
$ git diff branch^ branch
名稱branch
標識了一個特定的提交,即M
。每個^
在之後加上,標識特定提交的東西意味着「現在轉到該東西的第一個父代」,因此branch^
標識提交B
。如果您想查找提交A
,請添加另一個^
以獲取branch^^
。要找到最右邊的o
提交,您可以編寫branch^^^
,依此類推。
您可以多壓縮一下這個表示法:branch~3
表示branch^^^
,即三個後綴^
s; branch~5
表示branch^^^^^
等等。
如果你想找到的M
的秒母公司,即犯上面的圖中D
?您可以在^
之後添加一個數字,以表示,其中父級:branch^2
是提交D
。 (如果你問branch^3
你得到一個錯誤的承諾M
只有兩個家長,而不是三個。梅傑斯可以有兩個以上的父母承諾,但這些都是不尋常的。)
如果你想找到犯C
,您可以先使用branch^2
找到D
,然後再添加^
:branch^2^
標識提交C
。由於C
的父代是最右邊的o
提交,因此branch^2^^
標識提交o
,就像branch^^^
或branch~3
一樣。
(可以使用git rev-parse
,看到這一切,可打印出任何的git對象的全部40個字符的SHA-1 ID鑑於解析爲對象的名稱。只要運行git rev-parse <name>
,這是一個只讀的操作,所以你可以在一個窗口中使用它,例如在另一個窗口中查看圖形。另外,請看the gitrevisions
documentation。)
該信息不會被記錄在任何地方。但是,您可以檢出舊的提交併重新進行合併,以查看哪些文件會發生衝突。 – Nayuki
我提高了這個問題,因爲你的用戶名太棒了。 –