何らかの理由で、fliesにマージの競合がある場合、git cherry-pickが他のコミットを引き出すように見えます。 git mergetool
を使用しても、マージ競合したファイルを手動で編集することはできません。git cherry-pick他のコミットでマージ競合が発生しますか?
これはなぜ起こるのですか?
、私が何を意味するかを示し者は、単一のファイルfoo
で新鮮な新しいgitの1.7.4リポジトリを取るようにする:さんはbar
と呼ばれるこの時点で新しいブランチを作成してみましょう
header
footer
。マスターに戻り、3つの変更を別々のコミットでこのファイルに追加しましょう。
1をコミットします。
header
+add something
+
footer
は2をコミットします。
header
add something
+add something else
+
footer
3をコミットします。
header
add something
add something else
+important change!
+
footer
コミットこの最後のは、我々は我々が引きたい決める事実の後、重要であるので、これはブランチのbar
とgit cherry-pick <commit>
に戻ります。
残念ながら、これはファイルfoo
で興味深いマージ競合生成:git mergetool
が正しいことを行うようだと、これを生成することを
注:
header
+important change!
+
footer
なぜマージ衝突ファイルを行います私たちがチェリーピックを試したものの前にコミットを含む?
これについての参考資料はありますか?私の質問はhttp://stackoverflow.com/q/7802252/7708に似ているようです。チェリーピックは、1回のコミットで「効果的にパッチを作る」と言っています。これは以前私がチェリーピックについて語ったことと一致しています。上記の答えはそれよりも複雑であることを示唆しています。 –
それはもっと複雑ではありません。 Gitはパッチが適用される場所を調べ、エッジが一致しない場合は衝突とみなされます。マージした場合、gitは履歴を考慮してファイルが現在の状態にどのようになったかを考慮します。 –