Meskipun operasi git cherry-pick umum terjadi di Git, biasanya ini bukan solusi terbaik. Kadang-kadang ini adalah yang lebih kecil dari dua kejahatan, tetapi saya belum melihat situasi yang sesuai.
Ini adalah bagian pertama dari rangkaian yang dimulai dengan menjelaskan mengapa penyalinan itu buruk, dilanjutkan dengan mengapa itu mengerikan, lalu menjelaskan cara mendapatkan hasil yang sama menggunakan penggabungan. Saya akan menunjukkan kepada Anda bagaimana menerapkan teknik ini ketika Anda perlu melakukan penggabungan retroaktif dan ketika Anda ingin memperbaiki copy-to-merge sebelum sesuatu yang buruk terjadi.
Dua cabang terlibat dalam penyalinan: donor (dari mana komit berasal) dan penerima (di mana itu disalin). Sebut saja mereka master dan feature. Untuk kesederhanaan, anggaplah komit yang Anda salin berisi perubahan hanya dalam satu baris dari satu file. Dalam diagram ini, setiap komit ditandai dengan konten dari baris itu, dan panah putus-putus menunjukkan salinan (operasi git cherry-pick
) itu sendiri.

, , .
- "apple". , F1 feature, M1 master. , "apple". F2 feature, "berry", F2 master M2.
.
, :

3 master F3 feature. , "berry".
feature master. , , "berry".

, , , .
. F2 3 master F3 feature, F3 "cherry". , feature, , "cherry". , :

feature master . (three-way merge) "apple", feature "cherry", — "berry".
<<<<<<<<<< HEAD (master) berry ||||||||| merged common ancestors apple ========= cherry >>>>>>>>>> feature
, , . , .
, , , feature.
( , .). ?

, "apple". victim A V1, . V1 feature : F1 , "apple". master 1, .
. feature "berry" F2, master M2. "cherry" feature F3. master 3, , master "berry".
victim "-" feature master. V2 V3, "apple".
- , feature victim, V4 , "cherry" feature.
"" victim, master. ! : "" F2 M2. , , , () , .
Singkatnya, masalahnya: ketika git cherry-pick
dua salinan dari satu komit muncul di pohon. Jika setidaknya satu dari barisnya berubah sebelum menggabungkan salinannya, maka tabrakan sendiri akan muncul. Apalagi ini bisa terjadi dalam seminggu atau setahun. Ini berarti bahwa orang yang akan menyelesaikannya mungkin tidak memiliki sumber daya untuk membuat keputusan yang tepat (dia tidak menyalin, tim benar-benar berubah, dll.).
Namun, semua Santa Barbara ini bisa menjadi lebih buruk jika konflik tidak terjadi!
Mengapa? Baca terus di bagian selanjutnya.