2014-12-05 88 views
0

我有一個我無法解釋的問題。在分公司的「解除-14-5」我有一個文件EquityException.java,我清楚地看到,文件是存在的,當我做的那支幹淨的副本(即git的克隆的git拉)Git在合併時顯示文件被刪除,但文件在分支中

但是,當我認爲合併分公司「生產」分支(其中還包含相同的文件),我看到的合併說文件是在分支刪除「發佈-14-5」

CONFLICT (rename/delete): somefolder/EquityException.java deleted in release-14-5 and renamed in HEAD. Version HEAD of somefolder/EquityException.java left in tree. 

這怎麼可能,如果我清楚地看到「該文件發佈-14-5「,甚至當我在Intellij中比較」製作「和」發佈-14-5「時,它說沒有區別?

回答

1

僅比較兩個分支頭,productionrelease-14-5是不夠的。

當您進行合併時,合併會返回到分支分歧的祖先點。你可以找出你自己的點:

git merge-base production release-14-5 

這個命令的輸出是公共祖先提交的散列。

現在仔細檢查每個分支上的日誌,返回到此合併基點。你很可能會找到答案爲什麼會有這樣的衝突。很可能,兩個歷史中至少有一個刪除了該文件,然後將其放回。 (需要調查的一個有用的問題是:該文件是否存在於合併基礎點?)

當Git合併分支時,它會單獨考慮兩個分支上的所有提交返回到合併基礎;它不只是做一個「三方差異」。因此可以通過提交刪除兩個分支和合並基礎中存在的文件,甚至在後續提交時還原文件。

相關問題