2011-08-06 3 views
2

ブランチを別のブランチにリベースしようとすると、gitはマージできず、競合が発生します。 gitのは、これら2つのコミットをマージすることができない理由を私は疑問に思ってなぜ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... 

:私は、競合ファイルに次のように見ることができますか?それは簡単なマージですね。 1つのバージョンにははありません。、もう1つのバージョンにはのいずれかがあります。なので、マージは簡単です。私は何が欠けていますか?

+0

ここではリベースしてマージしていますが、これはあなたがやっていることですか?これを行うために発行したコマンドを投稿することはできますか?何も含まれていないと言ったら、何も含まれていません。 –

+0

@Chris Nicola:私が与えたコマンドは 'git rebase -i origin/master'でした(私はコミットの束を持っていました...私は最初のものを選んで残りを押しつぶしていました)。私は実際にgitが私にこれらの矛盾を与える理由を理解せずに、実際にすべてのマージを手動で行ったという過程で混乱しました。私は3ウェイマージアルゴリズムを理解する必要がありますね! –

答えて

4

それらの共通の祖先(マージベース)を確認してください。その他のものが含まれている必要があります。

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

正確に。競合は、正しい動作がそのビットのコードを削除しているのか、それを7896670バージョンに変更しているのかを知らないということです。 –

+0

難しいのは、マージの隠れた3番目の部分を表示する方法です。問題があると仮定しました[私は削除を表示すると思っていました] –

+0

@Philip、それはまさに 'git diff'コマンドです。代わりに 'git mergetool'を使用してください。 –

関連する問題