Ilustrasi sampul artikel: Git Branch dan Merge: Cara Membuat Cabang & Menggabungkannya untuk Pemula
·GitDasarTutorial

Git Branch dan Merge: Cara Membuat Cabang & Menggabungkannya untuk Pemula

Belajar Git branch dan merge dari nol: apa itu branch, cara membuat cabang dengan git checkout -b, bekerja di branch, lalu menggabungkannya ke main dengan git merge, plus fast-forward vs merge commit dan cara mengatasi conflict.

Pembuat Hyper Sheets & BelajarWeb.dev

Branch (cabang) di Git adalah garis waktu terpisah untuk mengerjakan sesuatu tanpa mengganggu kode utama, dan merge adalah cara menggabungkan hasil kerja di cabang itu kembali ke branch utama. Kamu membuat cabang dengan git checkout -b fitur, bekerja dan commit di sana sepuasnya, lalu menyatukannya ke main dengan git merge fitur. Inilah dua keterampilan yang membuat kamu bisa bereksperimen dengan berani, dan berkolaborasi tanpa saling menimpa pekerjaan.

Di panduan ini kamu akan belajar dari nol: apa sebenarnya sebuah branch itu (jawabannya bakal mengejutkan), cara membuat dan berpindah cabang, alur bekerja di cabang, cara merge kembali ke main, perbedaan fast-forward dan merge commit, sampai apa yang terjadi kalau muncul merge conflict. Kalau kamu belum kenal Git sama sekali, sebaiknya baca dulu apa itu Git supaya konsep commit dan repo sudah nyangkut.

Apa Itu Branch?

Banyak pemula membayangkan branch sebagai “salinan folder proyek”, seolah Git menggandakan semua file-mu ke tempat lain. Kenyataannya jauh lebih ringan dan pintar dari itu. Sebuah branch hanyalah penunjuk (pointer) yang bisa bergerak, menempel pada satu rangkaian commit.

Ingat bahwa setiap commit adalah satu snapshot dengan penanda unik, dan tiap commit menunjuk ke commit sebelumnya, membentuk rantai. Sebuah branch, misalnya main, cuma sebuah label yang menempel di commit paling ujung dari rantai itu. Ketika kamu membuat commit baru, label main otomatis bergeser maju ke commit terbaru. Itu saja. Tidak ada penggandaan file, tidak ada folder baru.

Karena branch hanya sebuah pointer kecil, membuatnya sangat murah dan instan, bahkan di proyek raksasa dengan ribuan file. Inilah kenapa developer membuat cabang baru untuk hampir setiap tugas: memperbaiki bug, mencoba ide, menambah fitur. Branch utama biasanya bernama main (dulu master), dan kamu bebas membuat cabang seperti fitur-login atau perbaikan-bug di sampingnya.

Membuat dan Berpindah Cabang

Untuk membuat cabang baru sekaligus langsung berpindah ke sana, perintah paling umum adalah git checkout -b:

git checkout -b fitur   # buat cabang "fitur" DAN langsung pindah ke sana

Satu perintah itu melakukan dua hal: membuat pointer baru bernama fitur di commit tempat kamu berdiri sekarang, lalu memindahkanmu untuk “berdiri” di cabang itu. Git modern juga punya perintah yang lebih baru dan lebih jelas maksudnya, yaitu git switch:

git switch -c fitur   # sama persis: -c artinya "create" cabang baru lalu pindah

Keduanya menghasilkan hal yang sama; git switch sekadar versi yang lebih mudah dibaca. Kalau cabangnya sudah ada dan kamu cuma ingin berpindah, buang tanda -b/-c:

git checkout main   # pindah ke cabang yang sudah ada bernama main
git switch main     # cara modern untuk hal yang sama

Alur Kerja: Branch → Commit → Merge

Sekarang mari satukan gambaran besarnya. Alur khas bekerja dengan cabang selalu mengikuti pola yang sama, dan diagram di bawah ini menunjukkannya secara visual: main berjalan lurus, cabang fitur menyimpang, lalu keduanya menyatu lagi.

Branch & Merge
git checkout -b fiturCabang baru lahir dari C2, kamu bekerja & commit di sini (C3, C4).
git merge fiturGabungkan kembali ke main, lahir merge commit M.
Fast-forwardmain tak maju selama kamu di cabang → pointer main cukup digeser maju. Tanpa merge commit.
Merge commitKedua cabang sama-sama maju (menyimpang) → Git membuat commit baru (M) yang mengikat keduanya.

Mari kita bedah tiap tahap sesuai gambar:

  1. Mulai dari main. Proyekmu punya beberapa commit di main, di diagram ini C1 dan C2.
  2. Buat cabang dari commit terkini. Kamu jalankan git checkout -b fitur saat berdiri di C2. Pointer fitur lahir di C2, dan kamu pindah ke sana.
  3. Bekerja dan commit di cabang. Kamu mengedit file lalu commit seperti biasa, C3 lalu C4. Commit-commit ini menempel di fitur, sementara main tetap diam di C2, tak tersentuh.
  4. Gabungkan kembali ke main. Setelah fitur selesai, kamu pindah ke main lalu jalankan git merge fitur. Git menyatukan pekerjaan cabang itu ke main, di diagram ditandai merge commit M.
  5. Hapus cabang yang sudah selesai. Cabang fitur sudah tak diperlukan, jadi bisa dibuang dengan git branch -d fitur. Karena cuma pointer, menghapusnya tidak menghilangkan commit apa pun yang sudah ter-merge.

Urutan perintahnya dalam praktik kira-kira begini:

git checkout -b fitur          # 1. buat & pindah ke cabang fitur
# ... edit file ...
git add .                      # 2. stage perubahan
git commit -m "Tambah fitur"   #    commit di cabang fitur
git checkout main              # 3. balik ke main
git merge fitur                # 4. gabungkan fitur ke main
git branch -d fitur            # 5. hapus cabang yang sudah selesai

Perintah Branch & Merge yang Wajib Dikuasai

Ini bagian intinya. Lima perintah berikut sudah menutupi hampir semua kebutuhan branch dan merge sehari-hari:

Perintah Fungsi
git branch Melihat daftar semua cabang (cabang aktif ditandai *)
git checkout -b fitur Membuat cabang fitur baru dan langsung berpindah ke sana
git switch -c fitur Sama seperti di atas, versi modern yang lebih mudah dibaca
git merge fitur Menggabungkan cabang fitur ke cabang tempat kamu sedang berdiri
git branch -d fitur Menghapus cabang fitur (setelah selesai di-merge)

Perhatikan bahwa git merge fitur selalu menggabungkan ke cabang tempat kamu sedang berada saat itu. Jadi kalau ingin menyatukan fitur ke main, kamu harus git checkout main dulu, baru git merge fitur. Urutan ini sering bikin pemula bingung, jadi ingat baik-baik: pindah ke tujuan dulu, baru merge.

Fast-forward vs Merge Commit

Saat kamu menjalankan git merge, Git memilih salah satu dari dua cara menggabungkan, tergantung apakah main ikut maju selama kamu bekerja di cabang.

Fast-forward terjadi kalau main tidak mendapat commit baru sejak kamu bercabang. Karena main masih diam di titik yang sama, Git tidak perlu membuat commit gabungan apa pun, ia cukup menggeser pointer main maju ke commit terakhir cabangmu. Hasilnya riwayat tetap satu garis lurus yang bersih.

Merge commit terjadi kalau kedua cabang sama-sama maju, misalnya ada orang lain yang menambah commit ke main selagi kamu mengerjakan fitur. Kedua garis menyimpang, jadi Git membuat satu commit baru khusus (commit M di diagram) yang mengikat kedua garis menjadi satu. Commit ini istimewa karena punya dua “induk”: ujung main dan ujung fitur.

Kalau Terjadi Merge Conflict

Kadang saat merge, Git berhenti dan bilang ada conflict. Ini bukan error dan bukan tanda kamu merusak sesuatu. Merge conflict muncul ketika baris yang sama diubah secara berbeda di kedua cabang, Git tidak berani menebak versi mana yang kamu mau, jadi ia menyerahkan keputusan itu kepadamu.

Git akan menandai bagian yang bentrok langsung di dalam file, kira-kira seperti ini:

<<<<<<< HEAD
warna tombol: biru
=======
warna tombol: oranye
>>>>>>> fitur

Tugasmu tinggal membuka file itu, memilih versi yang benar (atau menggabungkan keduanya), menghapus baris penanda <<<<<<<, =======, dan >>>>>>>, lalu menyimpannya. Setelah itu git add file tersebut dan git commit untuk menyelesaikan merge.

Kalau kamu ingin melihat proses ini secara langsung, membuat cabang, commit, lalu merge sampai menyelesaikan conflict, kamu bisa mencobanya di latihan interaktif branching di Hyper Sheets dan latihan merging-nya langsung di browser tanpa setup apa pun.

Cek Pemahaman

Perintah mana yang membuat cabang baru bernama fitur SEKALIGUS langsung berpindah ke cabang itu?

FAQ Seputar Git Branch dan Merge

Apa itu branch di Git dengan bahasa sederhana?

Branch adalah garis waktu terpisah untuk mengerjakan sesuatu tanpa mengganggu kode utama. Secara teknis, ia hanyalah sebuah penunjuk (pointer) yang bisa bergerak menempel pada satu commit, bukan salinan file. Karena cuma pointer, membuat branch itu instan dan hampir tidak memakan ruang.

Apa beda git checkout -b dan git switch -c?

Keduanya sama persis: membuat cabang baru lalu langsung berpindah ke sana. git switch -c adalah perintah yang lebih baru dan lebih mudah dibaca (switch khusus untuk berpindah cabang, sedangkan checkout punya banyak fungsi lain). Untuk pemula, pilih salah satu dan pakai konsisten, hasilnya identik.

Apa itu fast-forward merge?

Fast-forward merge terjadi ketika cabang tujuan (misalnya main) tidak mendapat commit baru selama kamu bekerja di cabang lain. Karena tidak ada percabangan riwayat yang perlu disatukan, Git cukup menggeser pointer main maju ke commit terakhir cabangmu, tanpa membuat merge commit. Riwayatnya tetap satu garis lurus yang bersih.

Merge conflict itu error, ya?

Bukan. Merge conflict muncul ketika baris yang sama diubah berbeda di dua cabang, dan Git tidak mau menebak versi mana yang benar. Ia menandai bagian yang bentrok dan meminta kamu memilih. Cukup buka file-nya, pilih versi yang benar, hapus baris penanda, lalu git add dan git commit. Ini bagian normal dari kolaborasi.

Perlukah menghapus cabang setelah merge?

Sebaiknya iya, supaya daftar cabangmu tetap rapi. Gunakan git branch -d fitur setelah cabang itu selesai di-merge. Karena branch hanya pointer, menghapusnya tidak menghilangkan commit apa pun yang sudah masuk ke main, kamu cuma membuang label yang sudah tak dipakai.

Langkah Selanjutnya

Cara tercepat menguasai branch dan merge adalah dengan mempraktikkannya langsung. Buat repo kecil, bikin cabang dengan git checkout -b coba, ubah sebuah file, commit, lalu merge kembali ke main. Sekali kamu melihat pointer bergerak dan merge berjalan, konsepnya langsung terasa masuk akal.

Kalau kamu ingin latihan terpandu langkah demi langkah, kerjakan latihan branching dan latihan merging di Hyper Sheets, keduanya berjalan di browser, lengkap dengan visualisasi cabang yang bergerak saat kamu mengetik perintah. Setelah nyaman, branch akan menjadi kebiasaan yang membuatmu berani bereksperimen tanpa pernah takut merusak kode utama.