gitmergetoolkonflikMenengah5 mnt baca

Mergetool dengan VS Code

Konfigurasi VS Code sebagai git mergetool dan selesaikan konflik lewat alur tiga panel yang visual.

Kenapa butuh mergetool

Mengedit marker <<<<<<< HEAD manual bisa dilakukan, tapi melelahkan untuk konflik besar: kamu harus membayangkan tiga versi file sekaligus di kepala. git mergetool membuka tiap file konflik di program visual yang menampilkan versi-versimu berdampingan. Kenapa fitur ini ada? Karena resolve konflik adalah pekerjaan visual, dan alat visual mengurangi salah pilih baris secara drastis.

Menjadikan VS Code sebagai mergetool

VS Code punya merge editor bawaan 3 arah, jadi tidak perlu install apa-apa. Cukup daftarkan ke Git:

bash
git config --global merge.tool vscode
git config --global mergetool.vscode.cmd 'code --wait $MERGED'
git config --global mergetool.prompt false

Penjelasan tiap baris: baris pertama memilih vscode sebagai alat merge. Baris kedua memberi tahu Git perintah membukanya: code --wait membuka file hasil gabungan ($MERGED) dan --wait membuat Git menunggu sampai kamu menutup tab itu, supaya Git tahu kapan kamu selesai. Baris ketiga mematikan konfirmasi "launch vscode?" tiap file agar alur tidak terpotong.

Kenapa konfigurasi ini manual dan tidak otomatis? Karena Git tidak tahu editor favoritmu. Satu kali setup, berlaku untuk semua repo di komputermu.

Alur resolve tiga panel

Saat merge konflik terjadi, jalankan:

bash
git mergetool

VS Code terbuka dengan merge editor: tiga panel atas menampilkan Current (versimu), Incoming (versi branch lain), dan Base (versi sebelum keduanya berubah), plus panel Result di bawah sebagai hasil akhir. Alurnya:

  1. Untuk tiap blok konflik, klik tombol Take Current, Take Incoming, atau Take Both di panel Result. Pilihanmu langsung tersusun di Result.
  2. Kalau perlu campuran, edit langsung teks di panel Result seperti editor biasa.
  3. Kalau sudah puas, simpan (Ctrl+S) dan tutup tab merge editor.

Git otomatis menandai file itu resolved dan lanjut ke file konflik berikutnya. Setelah semua selesai:

bash
git status --short   # pastikan tidak ada lagi status konflik (UU, AA, UD, DU)
git commit           # selesaikan merge

Kapan memakai mergetool vs edit manual? Mergetool untuk konflik besar dengan banyak blok, atau saat kamu belum percaya diri membaca marker. Edit manual tetap lebih cepat untuk konflik satu-dua baris yang sepele.

Membersihkan file cadangan

Secara default Git menyimpan salinan asli file konflik dengan akhiran .orig sebagai pengaman. Setelah yakin hasil merge benar, bersihkan:

bash
git config --global mergetool.keepBackup false

Atau hapus manual file .orig yang tersisa. Kenapa ini penting? File .orig yang tertinggal rawan tidak sengaja ke-commit dan mengotori repo.

Kesalahan umum pemula

Salah: menutup VS Code tanpa menyimpan hasil di panel Result, lalu heran kenapa konfliknya "kembali lagi". Benar: Git hanya membaca file $MERGED saat VS Code ditutup. Tidak save berarti tidak ada perubahan. Selalu Ctrl+S sebelum menutup tab merge editor.

Salah: mengklik Take Current/Take Incoming tanpa membaca dulu isi bloknya, terutama untuk konflik di file yang tidak kamu kenal. Benar: baca ketiga panel dulu. Tombol cepat itu godaan: 10 detik membaca mengalahkan 1 jam debugging karena salah pilih versi.

Tantangan

Setup mergetool dan resolve satu konflik

Daftarkan VS Code sebagai mergetool dengan tiga perintah config di atas. Buat konflik sederhana di repo latihan, resolve lewat git mergetool dengan merge editor VS Code, lalu verifikasi tidak ada file .orig yang tertinggal.