Conflict adalah salah satu hal yang paling bikin panik developer baru. Tapi tenang — setelah kamu tahu cara membacanya, conflict jadi sesuatu yang biasa dan mudah diselesaikan.

Kapan Conflict Terjadi?

Conflict muncul ketika dua orang (atau dua branch) mengubah baris yang sama pada file yang sama, lalu di-merge. Git tidak bisa memilih mana yang "benar" secara otomatis, jadi dia memintamu untuk memutuskan.

Contoh skenario yang sering terjadi:

Cara Membaca Marker Conflict

Saat conflict terjadi, Git otomatis menandai bagian yang bermasalah di dalam file dengan marker khusus:

<<<<<<< HEAD
$host = 'localhost';      ← versi kamu (branch aktif)
=======
$host = '192.168.1.10';   ← versi dari branch yang di-merge
>>>>>>> feature/update-config

Penjelasan setiap bagian:

Marker Artinya
<<<<<<< HEAD Awal conflict — isi dari branch kamu saat ini (HEAD)
======= Pemisah antara kedua versi
>>>>>>> nama-branch Akhir conflict — isi dari branch yang sedang di-merge

Cara 1: Resolve Manual (Teks Editor)

Ini cara paling dasar. Buka file yang conflict, hapus marker Git, dan tinggalkan kode yang benar:

# Langkah demi langkah:

# 1. Lihat file mana yang conflict
git status

# 2. Buka file tersebut, edit secara manual
#    Hapus marker dan pilih/gabungkan kode yang benar

# 3. Setelah selesai, tambah ke staging
git add namafile.php

# 4. Lanjutkan merge
git commit
# atau kalau rebase:
git rebase --continue

Contoh: setelah resolve, file akan terlihat seperti ini (bersih tanpa marker):

$host = '192.168.1.10';  // ← kita pilih versi ini, hapus sisanya

Cara 2: Resolve di VS Code

VS Code punya UI bawaan yang memudahkan resolve conflict. Saat buka file yang conflict, akan muncul tombol di atas setiap bagian:

Setelah klik salah satu, marker langsung hilang dan kamu tinggal save, git add, lalu git commit.

Cara 3: Pakai git mergetool

# Set tool yang dipakai
git config --global merge.tool vscode
git config --global mergetool.vscode.cmd 'code --wait $MERGED'

# Buka merge tool
git mergetool

Conflict Saat Rebase

# Saat rebase dan ada conflict:
# 1. Fix conflict di file yang bermasalah
# 2. Stage file yang sudah difix
git add namafile.php

# 3. Lanjutkan rebase
git rebase --continue

# Kalau mau batal total
git rebase --abort

Tips Mencegah Conflict

⚠️ Jangan Panik

Conflict tidak merusak apapun. Kamu selalu bisa abort dengan git merge --abort atau git rebase --abort untuk kembali ke kondisi sebelum merge/rebase. Take your time, baca marker dengan teliti, dan resolve satu per satu.