Menangani Merge Conflict

Menangani Merge Conflict ⚔️

Merge conflict adalah situasi di mana Git tidak bisa secara otomatis menggabungkan dua versi kode yang berbeda — dan kamu perlu memutuskan secara manual mana yang benar.


Kapan Konflik Terjadi?

Konflik terjadi ketika dua orang mengubah baris yang sama pada file yang sama, atau seseorang menghapus file yang diubah orang lain:

Dev A mengubah baris 10 di index.html → commit A
Dev B mengubah baris 10 di index.html → commit B

Saat merge commit A dan B → KONFLIK di baris 10

Mengidentifikasi Konflik

git merge feature/navbar
# Auto-merging index.html
# CONFLICT (content): Merge conflict in index.html
# Automatic merge failed; fix conflicts and then commit the result.

git status
# both modified: index.html   ← file yang konflik

Marker Konflik di File

Git menandai area konflik dengan marker khusus:

<!DOCTYPE html>
<html>
<head>
<<<<<<< HEAD
  <title>Toko Online</title>
=======
  <title>Toko Online - Belanja Mudah</title>
>>>>>>> feature/navbar
</head>
<body>
<<<<<<< HEAD        → awal area konflik, versi branch aktif (main)
=======             → pemisah antara dua versi
>>>>>>> feature/navbar → akhir area konflik, versi yang di-merge

Langkah Menyelesaikan Konflik

Langkah 1: Lihat file yang konflik

git status
# Lihat semua file yang konflik

git diff
# Lihat detail semua konflik

Langkah 2: Edit file dan pilih versi yang benar

Buka file dengan text editor. Untuk setiap konflik, pilih:

  • Versi HEAD (branch aktif)
  • Versi branch yang di-merge
  • Gabungan keduanya
  • Sesuatu yang sama sekali berbeda

Hapus semua marker konflik:

<!-- Sebelum: ada marker konflik -->
<<<<<<< HEAD
  <title>Toko Online</title>
=======
  <title>Toko Online - Belanja Mudah</title>
>>>>>>> feature/navbar

<!-- Setelah: pilih atau gabungkan -->
  <title>Toko Online - Belanja Mudah</title>

Langkah 3: Tandai konflik sudah selesai

# Setelah edit manual, add file yang sudah diresolvei
git add index.html

# Jika ada banyak file konflik, selesaikan satu per satu
git add file-konflik-1.html
git add file-konflik-2.css

Langkah 4: Selesaikan merge

git commit
# Git akan membuka editor dengan pesan default:
# "Merge branch 'feature/navbar'"
# Simpan dan tutup editor

Batalkan Merge

Jika merasa tidak siap menyelesaikan konflik sekarang:

git merge --abort
# Repositori kembali ke kondisi sebelum merge dimulai

Tools Visual untuk Resolve Konflik

Mengedit marker konflik manual di text editor bisa membingungkan. Tools visual jauh lebih membantu:

# Buka merge tool bawaan Git
git mergetool

# VS Code memiliki UI conflict resolver yang bagus
# Buka file konflik di VS Code — akan muncul opsi:
# [Accept Current Change] [Accept Incoming Change]
# [Accept Both Changes] [Compare Changes]

Di VS Code, setiap konflik menampilkan:

  • Accept Current Change — ambil versi HEAD
  • Accept Incoming Change — ambil versi branch yang di-merge
  • Accept Both Changes — gabungkan keduanya
  • Compare Changes — lihat perbedaan berdampingan

Mencegah Konflik

Konflik tidak bisa sepenuhnya dihindari, tapi bisa diminimalkan:

# 1. Pull/fetch sering — selalu update sebelum push
git pull origin main

# 2. Branch pendek — jangan biarkan branch terlalu lama tidak di-merge
# Semakin lama branch terpisah, semakin besar potensi konflik

# 3. Komunikasi tim — beri tahu jika mau edit file tertentu

# 4. Rebase sebelum merge
git switch feature/navbar
git rebase main  # taruh commit di atas main terbaru
# Selesaikan konflik selama rebase (satu per satu per commit)
git switch main
git merge feature/navbar  # sudah bersih, fast-forward

💡 Tips: Konflik adalah hal normal dalam kolaborasi tim — bukan tanda ada yang salah. Kunci menyelesaikannya dengan baik adalah komunikasi: hubungi developer yang kode-nya berkonflik denganmu, pahami niat di balik perubahan mereka, lalu putuskan bersama solusi yang terbaik. Jangan asal pilih salah satu tanpa memahami kedua versi. 🤝

Sebelumnya

Informasi Kursus

Kursus

Git Dasar

Kategori

Kolaborasi

Durasi Pelajaran

20 menit

Pelajaran dalam Kategori Ini