Git Merge: Menggabungkan Branch
Cara menggabungkan branch fitur ke main, beda fast-forward dengan merge commit, dan kapan merge dipakai.
Kapan merge dipakai?
Merge adalah momen "fitur selesai". Kamu sudah mengerjakan sesuatu di branch fitur-login selama beberapa hari, kodenya sudah dites, dan sekarang hasilnya perlu masuk ke main supaya jadi bagian resmi proyek.
Aturan alurnya selalu sama:
- Pindah ke branch tujuan (yang akan menerima perubahan).
- Jalankan merge dari branch sumber (yang membawa perubahan).
# 1. pindah ke tujuan
git switch main
# 2. gabungkan fitur-login ke main
git merge fitur-loginUpdating 7a1b2c3..3f2a1b9
Fast-forward
index.html | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)Fast-forward: kasus paling sederhana
Contoh di atas menunjukkan fast-forward. Ini terjadi kalau branch main tidak punya commit baru sejak branch fitur-login dibuat. Git tinggal menggeser penanda main maju ke posisi fitur-login. Tidak ada commit baru yang dibuat, riwayat tetap lurus dan bersih.
Merge commit: saat kedua branch sama-sama maju
Kalau main juga punya commit baru (misalnya hotfix dari teman) sementara kamu mengerjakan fitur, fast-forward tidak mungkin. Git membuat merge commit khusus yang punya dua parent:
git switch main
git merge fitur-pembayaranMerge made by the 'ort' strategy.
dashboard.html | 40 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)Git akan membuka editor untuk pesan merge commit (default-nya sudah oke, tinggal save dan tutup). Riwayatnya sekarang bercabang lalu menyatu, yang bisa dilihat dengan:
git log --oneline --graph --all* 9d8e7f6 Merge branch 'fitur-pembayaran'
|\
| * 3f2a1b9 Tambah halaman pembayaran
| * a1b2c3d Validasi nomor kartu
* | 5e6f7a8 Hotfix tanggal di main
|/
* 7a1b2c3 Commit pertamaGraf ini adalah cara terbaik memahami apa yang sebenarnya terjadi saat merge.
Setelah merge: bersihkan branch
Branch fitur yang sudah digabung biasanya dihapus supaya daftar branch tetap rapi:
git branch -d fitur-loginDeleted branch fitur-login (was 3f2a1b9).Ingat, -d menolak menghapus branch yang belum di-merge. Itu fitur pengaman, bukan bug.
Merge vs rebase (sekilas)
Kamu mungkin mendengar istilah rebase sebagai alternatif merge. Sederhananya: merge mempertahankan riwayat apa adanya (jujur tapi grafnya bisa ramai), rebase menulis ulang riwayat supaya lurus (bersih tapi mengubah hash commit). Untuk pemula dan kebanyakan tim, merge adalah pilihan yang aman. Rebase baru dipelajari setelah kamu nyaman dengan merge, karena rebase yang salah bisa membingungkan.
Catatan teknis: Merge selalu menggabungkan ke branch yang sedang aktif. Kesalahan klasik: lupa
git switch maindulu sehingga malah me-mergemainke branch fitur (kebalik). Selalu cekgit statusataugit branchsebelum merge untuk memastikan kamu di branch tujuan yang benar. Dan kalau merge menghasilkan conflict, jangan panik, itu topik modul berikutnya.
Ringkasan
Pindah ke branch tujuan, lalu git merge nama-branch-sumber. Fast-forward kalau tujuannya tidak maju, merge commit kalau dua-duanya maju. Setelah beres, hapus branch fitur dengan git branch -d.