Berhenti menyalin, saatnya menggabungkan. Bagian 1. Gabungkan Konflik

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.







Diagram pertama







, , .







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







.







, :







Kedua







3 master F3 feature. , "berry".







feature master. , , "berry".







Setelah penggabungan 1







, , , .







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







Sebuah bom!







feature master . (three-way merge) "apple", feature "cherry", — "berry".







<<<<<<<<<< HEAD (master)
berry
||||||||| merged common ancestors
apple
=========
cherry
>>>>>>>>>> feature
      
      





, , . , .







, , , feature.







( , .). ?







Mimpi buruk berkaki tiga







, "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.








All Articles