GitGitMergeKolaborasi7 mnt baca

Menyelesaikan Merge Conflict di Git

Git berhenti merge dan memintamu menyelesaikan konflik. Cara membaca marker dan menyelesaikannya dengan tenang.

1 · Gejala & Log Pesan Error

error.log
Auto-merging app.js
CONFLICT (content): Merge conflict in app.js
Automatic merge failed; fix conflicts and then commit the result.

// di dalam file:
<<<<<<< HEAD
const total = harga * jumlah;
=======
const total = hitungTotal(harga, jumlah, diskon);
>>>>>>> fitur-diskon

2 · Akar Penyebab Masalah

Dua Perubahan Bertabrakan di Baris yang Sama

Conflict terjadi saat dua branch mengubah baris yang sama (atau berdekatan) dari file yang sama, dan Git tidak bisa memutuskan mana yang benar. Ini bukan error: ini Git yang jujur bilang "aku tidak tahu, kamu yang putuskan".

Marker yang Git sisipkan:

  • <<<<<<< HEAD: awal versi branch-mu saat ini.
  • =======: pemisah kedua versi.
  • >>>>>>> fitur-diskon: akhir versi branch yang di-merge.

Tugasmu: edit file menjadi versi final yang benar (bisa gabungan keduanya), hapus semua marker, lalu commit.

3 · Solusi & Diff Kode

✕ Sebelum (bermasalah)

before
<<<<<<< HEAD
const total = harga * jumlah;
=======
const total = hitungTotal(harga, jumlah, diskon);
>>>>>>> fitur-diskon

✓ Sesudah (diperbaiki)

after
// ✔ pilih yang benar, atau gabungkan. Marker harus hilang semua.
const total = hitungTotal(harga, jumlah, diskon);

Langkah Perbaikan

  1. Lihat file yang konflik: git status menandai file "both modified".
  2. Buka file, cari marker <<<<<<<. Pahami kedua versi, lalu tulis versi final. Boleh pilih salah satu, boleh gabungkan logikanya.
  3. Hapus SEMUA marker. File yang masih berisi <<<<<<< tidak akan jalan dan tidak boleh di-commit.
  4. Tandai selesai: git add <file> untuk setiap file yang sudah rapi.
  5. Commit: git commit (tanpa pesan pun Git sudah menyiapkan pesan merge default).
  6. Jalan buntu? git merge --abort membatalkan merge dan mengembalikan keadaan sebelum merge. Aman dipakai kapan pun sebelum commit.
  7. Pencegahan: git pull sering sebelum mulai kerja, dan bikin branch kecil yang cepat di-merge agar tabrakan jarang terjadi.