Mengatasi Merge Conflict Sampai Beres
Kenapa conflict terjadi, cara membaca marker conflict, menyelesaikannya manual, dan membatalkan merge.
Kenapa conflict terjadi?
Conflict muncul saat Git tidak bisa memutuskan sendiri versi mana yang benar. Skenario klasik: kamu dan temanmu mengubah baris yang sama di file yang sama di dua branch berbeda, lalu branch itu di-merge. Git berhenti dan memintamu memutuskan manual.
Ini bukan error dan bukan kesalahanmu. Ini Git yang jujur: "aku tidak tahu mau pakai yang mana, kamu yang putuskan."
Mengenali saat conflict terjadi
git switch main
git merge fitur-kontakAuto-merging kontak.html
CONFLICT (content): Merge conflict in kontak.html
Automatic merge failed; fix conflicts and then commit the result.Git memberi tahu file mana yang bermasalah. Buka file itu, kamu akan menemukan marker conflict:
<<<<<<< HEAD
<p>Hubungi kami di email: [email protected]</p>
=======
<p>Hubungi kami via WhatsApp: 0812-3456-7890</p>
>>>>>>> fitur-kontakCara membacanya:
- Di antara
<<<<<<< HEADdan=======: versi branch kamu sekarang (main). - Di antara
=======dan>>>>>>> fitur-kontak: versi branch yang di-merge. - Baris marker itu sendiri (<<<<<<<, =======, >>>>>>>) harus dihapus saat kamu selesai.
Menyelesaikan conflict langkah demi langkah
- Buka file yang conflict, baca kedua versi baik-baik.
- Edit manual: gabungkan dengan akal sehat. Kadang pakai versi A, kadang versi B, kadang gabungan keduanya. Hapus semua marker.
- Tandai selesai dengan
git addpada file tersebut. - Commit untuk menuntaskan merge.
<!-- hasil edit manual: gabungkan info yang benar dari keduanya -->
<p>Hubungi kami di email [email protected] atau WhatsApp 0812-3456-7890</p>git add kontak.html
git commit -m "Gabung info kontak dari branch fitur-kontak"Git tahu commit ini adalah penyelesaian merge, jadi kamu tidak perlu pesan yang rumit. Setelah commit, merge selesai dan riwayat kembali normal.
Membatalkan merge yang berantakan
Kalau conflict ternyata terlalu rumit dan kamu ingin mundur dulu untuk berpikir (atau minta bantuan teman):
git merge --abortPerintah ini mengembalikan semuanya ke kondisi sebelum merge dimulai, seolah merge tidak pernah terjadi. Branch-branchmu tetap utuh, tidak ada yang hilang. Syaratnya: abort hanya bisa dilakukan sebelum kamu commit penyelesaian merge.
Tips mencegah conflict
- Pull/merge sesering mungkin. Conflict membesar kalau branch dibiarkan lama tidak disinkronkan. Branch fitur yang di-merge tiap 1-2 hari jarang conflict parah.
- Komunikasi dengan tim. Kalau dua orang mengerjakan file yang sama, kabari dulu.
- Jangan edit kode orang tanpa koordinasi di branch yang sama.
Catatan teknis: Banyak editor (termasuk VS Code) punya tampilan khusus untuk conflict dengan tombol "Accept Current Change", "Accept Incoming Change", atau "Accept Both Changes". Tombol itu hanya pintasan edit, hasilnya tetap harus kamu baca ulang. Jangan pernah klik salah satunya tanpa membaca kedua versi kode: conflict di file konfigurasi atau logika bisnis yang salah pilih bisa merusak aplikasi secara diam-diam dan baru ketahuan belakangan.
Ringkasan
Conflict = Git minta keputusan manusia. Baca marker, edit manual dengan akal sehat, git add, commit. Kalau kewalahan, git merge --abort untuk mundur dengan aman. Semakin sering branch disinkronkan, semakin jarang conflict muncul.