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.
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.main tak maju selama kamu di cabang → pointer main cukup digeser maju. Tanpa merge commit.Mari kita bedah tiap tahap sesuai gambar:
- Mulai dari
main. Proyekmu punya beberapa commit dimain, di diagram ini C1 dan C2. - Buat cabang dari commit terkini. Kamu jalankan
git checkout -b fitursaat berdiri di C2. Pointerfiturlahir di C2, dan kamu pindah ke sana. - Bekerja dan commit di cabang. Kamu mengedit file lalu commit seperti biasa, C3 lalu C4. Commit-commit ini menempel di
fitur, sementaramaintetap diam di C2, tak tersentuh. - Gabungkan kembali ke
main. Setelah fitur selesai, kamu pindah kemainlalu jalankangit merge fitur. Git menyatukan pekerjaan cabang itu kemain, di diagram ditandai merge commit M. - Hapus cabang yang sudah selesai. Cabang
fitursudah tak diperlukan, jadi bisa dibuang dengangit 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.
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.