gitmergeconflictMenengah3 mnt baca

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

bash
git switch main
git merge fitur-kontak
bash
Auto-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:

html
<<<<<<< HEAD
<p>Hubungi kami di email: [email protected]</p>
=======
<p>Hubungi kami via WhatsApp: 0812-3456-7890</p>
>>>>>>> fitur-kontak

Cara membacanya:

  • Di antara <<<<<<< HEAD dan =======: 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

  1. Buka file yang conflict, baca kedua versi baik-baik.
  2. Edit manual: gabungkan dengan akal sehat. Kadang pakai versi A, kadang versi B, kadang gabungan keduanya. Hapus semua marker.
  3. Tandai selesai dengan git add pada file tersebut.
  4. Commit untuk menuntaskan merge.
html
<!-- hasil edit manual: gabungkan info yang benar dari keduanya -->
<p>Hubungi kami di email [email protected] atau WhatsApp 0812-3456-7890</p>
bash
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):

bash
git merge --abort

Perintah 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.