2

私は2つのブランチを持つプロジェクトを持っています:

     D---E branch1
    /
---A---C branch2

branch2 の上にコミット E (D ではなく) を適用したい。

競合を解決するためにgit cherry-pickgit mergetool ( meldを使用) を使用しました。ここまでは順調ですね。

ただし、コミット C 後のファイルの状態が

lineC1
<context C>
lineC2

コミット E によって導入された変更は

-lineC1
+lineE1
<context E>
-lineC2
+lineE2

デフォルトでmergetoolによって表示される結果は

lineE1
<context C>
lineE2

(つまり、行 E1 と E2 はコミット E に従って変更されましたが、内部コンテキストは現在のブランチから保持されています)。

代わりに、mergetool (つまり、meld) はデフォルトで次のように表示します。

lineC1
<context E>
lineC2

これは本当に意味がありません。

branch2 からコンテキストを保持し、コミット E によって変更された行への変更のみを考慮するように git cherry-pick に指示するにはどうすればよいですか?

4

2 に答える 2

0

別のマージ戦略またはデフォルト戦略 (再帰的) の別の戦略オプションを使用してみることができます。

git merge --helpセクション MERGE STRATEGIESを見てください。

同様の問題がありましたが、あなたのコンテキストの違いは関係なく、戦略オプションtheirs(フラグ-Xtheirs)を使用して解決しました

于 2014-01-31T16:29:29.077 に答える