gitmergebranchMenengah3 mnt baca

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:

  1. Pindah ke branch tujuan (yang akan menerima perubahan).
  2. Jalankan merge dari branch sumber (yang membawa perubahan).
bash
# 1. pindah ke tujuan
git switch main

# 2. gabungkan fitur-login ke main
git merge fitur-login
bash
Updating 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:

bash
git switch main
git merge fitur-pembayaran
bash
Merge 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:

bash
git log --oneline --graph --all
bash
*   9d8e7f6 Merge branch 'fitur-pembayaran'
|\
| * 3f2a1b9 Tambah halaman pembayaran
| * a1b2c3d Validasi nomor kartu
* | 5e6f7a8 Hotfix tanggal di main
|/
* 7a1b2c3 Commit pertama

Graf 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:

bash
git branch -d fitur-login
bash
Deleted 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 main dulu sehingga malah me-merge main ke branch fitur (kebalik). Selalu cek git status atau git branch sebelum 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.