Strategi percabangan

Strategi main plus feature branch dan konvensi penamaan branch yang lazim di tim.

Daftar isi

Branch hanya berguna apabila pemakaiannya disepakati. Tanpa kesepakatan, repository yang sama dapat dipenuhi branch yang usang, bertabrakan namanya, atau tidak pernah selesai. Topik ini membahas strategi main plus feature branch yang menjadi titik awal hampir semua alur kerja tim, konvensi penamaan yang membuat daftar branch tetap terbaca, dan praktik hidup branch yang pendek.

Main sebagai jalur utuh#

Strategi paling dasar menetapkan satu branch utama, yaitu main, sebagai keadaan proyek yang selalu siap dipakai. Setiap pekerjaan baru dimulai dengan membuat branch dari main, dikerjakan di sana sampai utuh, lalu digabungkan kembali. Dengan aturan ini, main tidak pernah memuat pekerjaan setengah jadi, dan siapa pun yang mengambil main memperoleh versi yang layak dijalankan.

Aturan tersebut menyiratkan disiplin penggabungan: branch fitur baru boleh hidup hanya apabila isinya pada akhirnya masuk kembali ke main. Branch yang gagal diujicobakan dihapus, dan penyimpannya tidak dianggap kerugian karena biaya membuat branch nyaris nol. Sebaliknya, branch yang dijaga berbulan-bulan menggumpalkan pekerjaan besar yang mahal digabungkan, sehingga panjang hidup branch adalah salah satu ukuran kesehatan alur kerja.

Konvensi penamaan#

Nama branch dibaca lebih sering daripada dibayangkan: pada daftar git branch, pada keluaran git log --graph, dan pada daftar commit platform hosting. Konvensi penamaan yang konsisten membuat daftar tersebut menyaring dirinya sendiri. Bentuk yang lazim adalah awalan jenis pekerjaan diikuti garis miring dan deskripsi singkatnya.

AwalanKegunaanContoh
feature/fitur baru yang menambah kemampuanfeature/ekspor-pdf
fix/perbaikan pada perilaku yang kelirufix/hitung-diskon
hotfix/perbaikan mendesak pada versi produksihotfix/kebocoran-sesi
chore/pemeliharaan tanpa perubahan perilakuchore/perbarui-dependensi

Konvensi ini diterapkan langsung pada repository latihan.

bash
# tanggal commit ditetapkan agar keluaran contoh dapat direproduksi secara persis
export GIT_AUTHOR_DATE="2026-11-01T09:00:00+07:00"
export GIT_COMMITTER_DATE="2026-11-01T09:00:00+07:00"
bash
rm -rf /tmp/lab-nama
mkdir /tmp/lab-nama
cd /tmp/lab-nama
git init -b main
git config user.name "Budi"
git config user.email "[email protected]"
printf "Panduan awal.\n" > panduan.md
git add panduan.md
git commit -m "Panduan awal"
git branch feature/ekspor-pdf
git branch fix/hitung-diskon
git branch hotfix/kebocoran-sesi
git branch
git branch --list "fix/*"
text Keluaran
Initialized empty Git repository in /tmp/lab-nama/.git/
[main (root-commit) 91e0134] Panduan awal
 1 file changed, 1 insertion(+)
 create mode 100644 panduan.md
  feature/ekspor-pdf
  fix/hitung-diskon
  hotfix/kebocoran-sesi
* main
  fix/hitung-diskon

Tanda garis miring pada nama branch bukan hiasan, melainkan penanda hierarki yang dapat difilter. Opsi --list dengan pola semacam fix/* menampilkan hanya kelompok tertentu, dan pola yang sama dipakai banyak alat pelengkap (completion) di terminal. Hindari nama seperti cabang-baru atau nama pribadi, karena keduanya tidak menjelaskan isinya dan cepat menjadi sampah yang tak berani dihapus.

Satu branch, satu gagasan#

Branch yang mengandung dua gagasan sekaligus sulit ditinjau, sulit dibatalkan sebagian, dan hampir pasti bertabrakan dengan pekerjaan lain. Praktik yang menjaga fokus adalah memberi satu branch satu topik, menuliskan topik itu pada namanya, dan menahan godaan memperbaiki hal lain di dalamnya. Temuan kecil di luar topik lebih baik dicatat sebagai pekerjaan baru dengan branchnya sendiri.

Untuk branch yang hidup lebih dari beberapa hari, main terus bergerak dan branch tersebut perlu disegarkan dengan menggabungkan atau me-rebase main ke atasnya agar selisihnya tidak menumpuk. Mekanika penyegaran itu memanfaatkan materi penggabungan dan rebase, sedangkan aturan kerjanya sederhana: segarkan sebelum selisihnya terasa, bukan setelah penggabungan menjadi proyek tersendiri.

Menentukan branch yang siap dihapus#

Semakin banyak branch dibuat, semakin penting pemeriksaan berkala atas daftarnya. Git menyediakan dua filter yang menjawab pertanyaan utamanya: branch mana yang isinya sudah utuh masuk main, dan branch mana yang masih menyimpan pekerjaan terpisah.

bash
git branch --merged main
git branch --no-merged main
text Keluaran
  feature/ekspor-pdf
  fix/hitung-diskon
  hotfix/kebocoran-sesi
* main

Opsi --merged menampilkan branch yang seluruh commitnya sudah terkandung di main, sehingga aman dihapus dengan git branch -d, sedangkan --no-merged menampilkan sisanya. Pada keluaran di atas, seluruh branch baru masuk daftar pertama karena belum menyimpan commit apa pun di luar main, sedangkan daftar kedua kosong karena tidak ada pekerjaan yang terpisah. Pada repository nyata, pemeriksaan ini biasa dijalankan bersama penghapusan massal branch yang sudah selesai, sehingga daftar branch tidak pernah menjadi arsip yang tak terawat.

Ringkasan#

  • Strategi dasarnya adalah main yang selalu siap dipakai dan setiap pekerjaan berlangsung pada branch tersendiri yang akhirnya digabungkan kembali.
  • Nama branch memakai awalan jenis pekerjaan seperti feature/, fix/, dan hotfix/ sehingga daftar branch dapat difilter dan terbaca.
  • Satu branch seharusnya memuat satu gagasan, dan branch panjang disegarkan terhadap main secara berkala.

Referensi#