Menyelesaikan Konflik Merge
Membaca penanda konflik, memutuskan isi akhir, dan menuntaskan merge dengan tenang.
Konflik bukan bencana
Konflik terjadi saat dua branch mengubah baris yang sama pada berkas yang sama (atau satu menghapus berkas yang diedit yang lain). Git tidak bisa memutuskan versi mana yang benar, jadi ia berhenti dan meminta kamu memilih. Ini hal normal dalam kerja tim; kuncinya tenang dan sistematis.
Saat konflik muncul
$ git merge fitur-sapa
Auto-merging sapa.txt
CONFLICT (content): Merge conflict in sapa.txt
Automatic merge failed; fix conflicts and then commit the result.
Merge berhenti di tengah jalan. git status menampilkan:
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
both modified: sapa.txt
Penanda konflik di dalam berkas
Git menulis kedua versi ke berkas dengan penanda:
<<<<<<< HEAD
Halo semuanya!
=======
Halo, Kelas IT!
>>>>>>> fitur-sapa
- Antara
<<<<<<< HEADdan======== versimu (branch tempat kamu berada). - Antara
=======dan>>>>>>> fitur-sapa= versi dari branch yang digabung.
Langkah menyelesaikan
- Buka berkas, putuskan isi akhir: pertahankan salah satu, gabungkan keduanya, atau tulis ulang.
- Hapus seluruh penanda (
<<<<<<<,=======,>>>>>>>). Penanda yang tertinggal akan ikut ter-commit dan merusak kode! - Jalankan program/tes untuk memastikan hasil gabungan benar.
git add sapa.txt— menandai konflik di berkas itu selesai.git commit— menuntaskan merge (bisa tanpa-muntuk pesan default; di simulator, tambahkan-m).
printf "Halo semuanya!\nHalo, Kelas IT!\n" > sapa.txt # isi akhir (di simulator)
git add sapa.txt
git commit -m "Gabungkan fitur-sapa dan selesaikan konflik"
Di editor seperti VS Code, tersedia tombol "Accept Current / Accept Incoming / Accept Both" di atas penanda konflik.
Membatalkan merge
Ragu atau berantakan? Kembali ke keadaan sebelum merge:
git merge --abort
Alat bantu
git status— daftar berkas konflik.git diff— menampilkan bagian konflik.git log --merge— commit yang terlibat konflik.git mergetool— membuka alat visual yang dikonfigurasi.
Mengurangi konflik
- Merge/pull dari main sesering mungkin ke branch fiturmu.
- Pecah pekerjaan menjadi branch kecil dan berumur pendek.
- Komunikasikan siapa mengerjakan berkas mana.
- Gunakan formatter yang sama (agar tidak ada konflik spasi/format).