2つのブランチmaster
とfoo
は、同じルートコミットAを指しています。作業ツリーには1つのファイルbar.txt
しかありません。このgit cherry-pickの競合を起こす方法は?
$cat bar.txt
11111
22222
33333
44444
55555
はbar.txt
に行を追加し、master
にBをコミットしてください。
$cat bar.txt
11111
22222
33333
aaaaa
44444
55555
次にaaaaa
を削除し、他の場所bar.txt
でbbbbb
を追加、master
にCをコミットします。
$cat bar.txt
11111
bbbbb
22222
33333
44444
55555
実行git format-patch -1 C
0001-bbbbb.patch
ように、その名前を想定し、Cをコミットのパッチを生成します。
チェックアウトfoo
。 git am 00001-bbbbb.patch
またはgit apply 00001-bbbbb.patch
は、予想どおりに競合が発生して失敗します。しかし、git cherry-pick C
は問題なく成功します。
このquestionから私はgit am
またはgit apply
が、この場合、引数-3
または--3way
であまりにも成功することを学びます。しかし、私はgit cherry-pick
の3方向マージに関する設定や議論を見つけることができません。
質問:チェリーピックは失敗するように
、この場合にはgit cherry-pick
ための3ウェイ・マージの事を無効にする方法は?
ありがとうございます。
このパッチでは、コンテキスト行の数を調整できます。嫌な人は3人なので、コンテキストライン全体で変更内容が重複して表示されます。 2つのコンテキスト行にドロップすると、22222 \ n33333ペアは明確なコンテキストを提供できます。一方、チェリーピックはあなたのレポについてさらに多くのことを知っているので、マージベースとコンテキストラインについて合理的な決定を下すことができます(できるだけ成功を保証するためにマージ戦略のさまざまな部分が詳細になり、そうでない場合は衝突の報告) –
補足:チェリーピックが失敗する理由は何ですか? (適切に成功するパッチを用意するのではなく) –
@PhilipOakleyあなたのコメントを読んだ後、私は私の期待がどうにか不合理だと感じます。現在のコンテキストがパッチが関連しているコンテキストと異なる場合、3ウェイマージなしでパッチを適用できないことは本当ですか?私は3wayマージなしでチェリーピックのほとんどはまったく成功しないだろうと思う。 – ElpieKay