Merge Conflict: Kodingan Bentrok 💥
Ini adalah momen paling bikin panik di Git. Merge Conflict terjadi ketika dua orang (atau lo sendiri di dua branch berbeda) mengubah baris kode yang SAMA di waktu yang berbeda, dan Git bingung, perubahan mana yang harus dipakai.
1. Kapan Konflik Terjadi? 🧐
Konflik hanya terjadi ketika lo mencoba:
- Merge: Menggabungkan Branch A ke Branch B.
- Pull: Mengambil perubahan dari GitHub, tapi lo juga udah ngedit file itu.
Skenario Konflik:
- Branch A (
main) punya kode:const warna = "merah"; - Branch B (
fitur-baru) punya kode:const warna = "biru";
Pas lo git merge fitur-baru, Git akan bingung milih "merah" atau "biru".
2. Tanda-tanda Konflik 🚨
Git bakal teriak di terminal: Auto-merging [nama file] CONFLICT (content): Merge conflict in [nama file].
Kalau lo buka file yang konflik (misal index.js), isinya bakal jadi kayak gini:
const user = {
<<<<<<< HEAD
role: "admin", // Kodingan di Branch LO (HEAD)
theme: "dark"
=======
role: "member", // Kodingan di Branch yang mau digabung
theme: "light"
>>>>>>> fitur-baru
}3. Cara Menyelesaikan (Resolution) ✅
Langkah-langkahnya di VS Code lebih gampang daripada di terminal:
-
Lihat Tanda: Lo bakal liat 4 tombol kecil muncul di atas area konflik.
-
Pilih Solusi: Lo harus jadi hakim, putuskan kodingan mana yang mau dipertahankan.
| Tombol VS Code | Aksi | Hasil |
|---|---|---|
| Accept Current Change | Pakai kodingan di HEAD (kodingan lo) | Baris role: "member" hilang |
| Accept Incoming Change | Pakai kodingan dari branch lain | Baris role: "admin" hilang |
| Accept Both | Simpan dua-duanya (Biasanya salah) | Keduanya disimpan, tapi lo harus rapiin manual |
The Hard Way: Cara paling aman: Hapus manual semua baris yang ada <<<<<<<, =======, dan >>>>>>>. Tinggalkan hanya baris kode yang lo mau (Misal: role: "admin", tapi theme: "light").
4. Finalisasi Setelah Konflik 🏁
Setelah lo selesai ngedit dan baris-baris <<< sudah hilang, Git harus dikasih tau kalau konflik sudah selesai.
- Add lagi file yang udah diedit:
git add nama-file-yang-konflik.js- Commit lagi (Git otomatis bikin commit khusus):
git commit -m "Merge branch 'fitur-baru' - Conflict resolved"Selesai! Branch lo sudah aman tergabung.