2011-08-06 40 views
2

當我嘗試將我的一個分支重新綁定到另一個分支時,git無法合併並引發衝突。我可以在衝突的文件中看到以下內容:爲什麼git無法合併?

<<<<<<< HEAD 
======= 
    if (($mode == 'w')) { 
    $mode = 'r'; 
    var_export($GLOBALS, true); 
    //print("<pre>"); 
    //var_dump(array_keys($GLOBALS)); 
    //print("</pre>"); 
    } 
>>>>>>> 7896670... Some initial changes that I carried over from other directory... 

我只是想知道爲什麼git不能合併這兩個提交?這是一個微不足道的合併,不是嗎?一個版本包含什麼也沒有另一個版本包含東西,所以合併很簡單。我錯過了什麼?

+0

你說rebase和merge在這裏,你在做什麼?你能發佈你發佈的命令嗎?發生這種情況,當你說一個不包含任何東西時,你能指出哪一個不包含任何東西? –

+0

@Chris Nicola:我給的命令是'git rebase -i origin/master'(我有一堆提交...我正在挑選第一個並壓扁其餘部分)。我在這個過程中感到非常困惑,我實際上是手動進行了所有合併,而沒有理解爲什麼git給我這些衝突。我需要了解3路合併算法,我猜!確切地說,是 –

回答

4

檢查它們的共同祖先(合併基礎) - 它應該包含別的東西

git diff `git merge-base HEAD 7896670` HEAD 
+1

。 git不知道正確的行爲是刪除該位代碼還是將其更改爲7896670版本。 –

+0

棘手的是如何讓git顯示隱藏的第三部分合並,假設是這個問題[我以爲它會顯示刪除] –

+0

@Philip,這正是上面的'git diff'命令所做的。 –

相關問題