Branching & Merging
Bayangkan kamu sedang mengerjakan fitur baru yang berisiko merusak kode utama yang sudah berjalan lancar. Di sinilah Branching berperan.
Branching memungkinkan kamu membuat "salinan" terpisah dari kode kamu untuk bereksperimen. Jika eksperimen berhasil, kamu bisa menggabungkannya (Merge) kembali. Jika gagal, kamu bisa membuangnya tanpa mempengaruhi kode utama.
1. Branching (git branch, git checkout, git switch)
Secara default, kamu bekerja di branch bernama main (atau master pada versi Git lama). Mari kita buat branch baru untuk membuat fitur simulasi.
Langkah 1: Membuat Branch Baru
Kita akan membuat branch bernama fitur-navbar.
git branch fitur-navbarLangkah 2: Pindah ke Branch Baru
Setelah dibuat, kita harus "masuk" ke branch tersebut agar perubahan kita tersimpan di sana, bukan di main.
git checkout fitur-navbarTips Modern: Git versi terbaru mengenalkan perintah git switch fitur-navbar yang fungsinya sama dengan checkout tapi lebih spesifik untuk pindah branch.
Langkah 3: Lakukan Perubahan
Sekarang kamu ada di branch fitur-navbar. Coba buat file baru:
touch navbar.html
git add navbar.html
git commit -m "Menambahkan file navbar"Saat ini, file navbar.html hanya ada di branch fitur-navbar. Jika kamu kembali ke main, file itu tidak akan ada di sana. Ini membuktikan bahwa pekerjaan kamu terisolasi.
2. Merging (git merge)
Setelah kamu selesai mengerjakan fitur di branch fitur-navbar dan yakin semuanya berjalan baik, saatnya menggabungkan hasil kerja tersebut ke branch utama (main).
Langkah 1: Pindah ke Branch Tujuan
Kita harus kembali ke branch penerima (biasanya main).
git checkout mainLangkah 2: Menggabungkan Branch
Perintahkan Git untuk mengambil perubahan dari fitur-navbar dan memasukkannya ke main.
git merge fitur-navbarJika tidak ada masalah, Git akan melakukan "Fast-forward", dan sekarang kode di main sudah memiliki fitur dari fitur-navbar.
3. Resolusi Konflik (Conflict Resolution)
Ini adalah momen yang sering ditakuti pemula, tapi sebenarnya ini hal yang wajar.
Kapan Conflict Terjadi? Conflict terjadi ketika dua branch mengubah baris yang sama pada file yang sama, dan Git bingung perubahan mana yang harus diambil saat di-merge.
Simulasi Conflict:
- Di branch
main, ubah baris 1 fileindex.htmlmenjadi: "Ini Judul Main". Commit perubahannya. - Di branch
fitur-navbar, ubah baris 1 fileindex.htmlmenjadi: "Ini Judul Fitur". Commit perubahannya. - Coba merge
fitur-navbarke dalammain.
Git akan berteriak: CONFLICT (content): Merge conflict in index.html.
Cara Memperbaiki Conflict:
Langkah 1: Buka File yang Konflik
Buka index.html di text editor. Kamu akan melihat tanda aneh seperti ini:
<<<<<<< HEAD
Ini Judul Main
=======
Ini Judul Fitur
>>>>>>> fitur-navbar<<<<<<< HEAD: Menandakan kode yang ada di branch kamu saat ini (main).=======: Pemisah.>>>>>>> fitur-navbar: Menandakan kode yang datang dari branch yang mau di-merge.
Langkah 2: Edit Manual
Tugas kamu adalah menghapus tanda-tanda tersebut (<<<, ===, >>>) dan memilih kode mana yang benar, atau menggabungkan keduanya.
Misalnya, kita ubah menjadi:
Ini Judul Final GabunganSimpan file tersebut.
Langkah 3: Finalisasi Merge Setelah diedit dan disimpan, beritahu Git bahwa konflik sudah selesai.
git add index.html
git commit -m "Memperbaiki conflict pada judul"Selesai! Konflik teratasi.