master
ブランチがあるとしましょう。
次に、newbranch
git checkout -b newbranch
commit1とcommit2newbranch
に 2つの新しいコミットを作成します。
次に、マスターに切り替えて作成しますcherry-pick
git checkout master
git cherry-pick hash_of_commit1
gitk
調べてみると、 commit1とその厳選されたバージョンのハッシュが異なることがわかります。つまり、技術的には、これらは 2 つの異なるコミットです。
最後に、次のようにマージnewbranch
しmaster
ます。
git merge newbranch
異なるハッシュを持つこれら 2 つのコミットが問題なくマージされたことを確認しますが、同じ変更を 2 回適用する必要があることを暗示しているため、そのうちの 1 つが失敗するはずです。
マージ中に git は本当にコミットの内容をスマートに分析し、変更を 2 回適用すべきではないと判断したり、これらのコミットが内部的にリンクされているとマークされたりするのでしょうか?