Mari kita bayangkan bahwa kita memiliki master
cabang.
Lalu kita buat a newbranch
git checkout -b newbranch
dan buat dua commit baru ke newbranch
: commit1 dan commit2
Lalu kami beralih ke master dan membuat cherry-pick
git checkout master
git cherry-pick hash_of_commit1
Melihat ke dalam gitk
kita melihat bahwa commit1 dan versi yang dipilih ceri memiliki hash yang berbeda, jadi secara teknis mereka adalah dua komitmen yang berbeda.
Akhirnya kami bergabung newbranch
menjadi master
:
git merge newbranch
dan melihat bahwa dua komitmen ini dengan hash yang berbeda digabungkan tanpa masalah meskipun mereka menyiratkan bahwa perubahan yang sama harus diterapkan dua kali, jadi salah satu dari mereka harus gagal.
Apakah git benar-benar melakukan analisis cerdas terhadap konten komit sambil menggabungkan dan memutuskan bahwa perubahan tidak boleh diterapkan dua kali atau komit ini ditandai secara internal sebagai terhubung bersama?
sumber
Setelah penggabungan seperti itu, Anda mungkin memiliki komitmen ceri-pick dalam sejarah dua kali.
Solusi untuk mencegah hal ini saya kutip dari artikel yang merekomendasikan untuk cabang dengan duplikat (cherry-pick) berkomitmen menggunakan rebase sebelum bergabung:
Koreksi EDIT seharusnya oleh komentar David Lemon
sumber
---Y---b2'---b4'