2017-10-11 8 views
0

私はブランチマスタとRCブランチを持っています。マスターからRCにプルリクエストをしたとき、それは多くの矛盾を示しました。私は最初に(ローカル)RCにリベースしましたが、リベースの競合は見られませんでした。コンフリクトはマージしますが、リベースのコンフリクトはありません

私はローカルでマージしようとしましたが、私もコンフリクトがあります。それはなぜですか?リベースは、矛盾することなく動作しますが、マージはできません。

+0

rerereが有効になっていますか( 'git config -get rerere.enabled')?これは、競合が自動的に1つのケースでは解決され、他のケースでは解決されない1つの理由になります。 – LeGEC

答えて

1

最も可能性の高い理由は、マージが他のブランチに関連する1つのブランチからチェリーピックされている可能性が高いと思います。 rebaseが、書き換えようとしているコミットが新しいベースに既に含まれているコミットと同じテキストの変更を適用したことを検出すると、そのコミットをスキップします。あなたはA'xに行われたAは(おそらくそれが桜だったことDにも同じ変更を行い

x -- A -- B -- C <--(master) 
\ 
    D -- A' -- E <--(branch) 

を持っている場合

だから(...あり、その説明について不正確なものは、おそらくだが、それは大体そうです) )... -picked、またはリベース、またはスカッシュが合併し、その後、

git rebase branch master 

A'をスキップし、DEを書き換えます。あなたはA'の変化に起因する紛争を得ることができるように、しかし

git checkout master 
git merge branch 

は、個々のコミットを見ていないでしょう。

+0

https://stackoverflow.com/q/44546974/1256452に対する私の回答も参照してください(このケースと他2件を含みます) – torek

関連する問題