Strategi Git Branching untuk Tim Developer
Ketika bekerja dalam tim, strategi git branching yang tepat bisa menentukan apakah proses development berjalan lancar atau justru penuh konflik merge yang bikin frustrasi. Artikel ini membahas beberapa model branching populer, kapan harus pakai yang mana, dan tips praktis supaya kolaborasi tim lebih efektif.
Kenapa Strategi Branching Itu Penting?
Tanpa aturan branching yang jelas, biasanya yang terjadi adalah:
- Semua orang push ke
mainlangsung, deployment jadi tidak terkontrol - Konflik merge menumpuk karena branch hidup terlalu lama
- Tidak ada pemisahan antara fitur yang sedang dikerjakan dan kode yang siap rilis
Strategi branching memberikan struktur pada workflow tim. Setiap orang tahu di mana harus mulai, ke mana harus merge, dan kapan kode siap masuk production.
Model 1: Git Flow
Git Flow adalah model klasik yang diperkenalkan oleh Vincent Driessen. Cocok untuk proyek dengan siklus rilis yang terstruktur - misalnya aplikasi ERP atau software manufaktur yang punya jadwal rilis bulanan.
Struktur Branch
main → kode production
develop → kode development terbaru
feature/* → fitur baru
release/* → persiapan rilis
hotfix/* → perbaikan darurat di production
Cara Kerja
# Mulai fitur baru
git checkout develop
git checkout -b feature/tambah-laporan-stok
# Selesai, merge ke develop
git checkout develop
git merge --no-ff feature/tambah-laporan-stok
git branch -d feature/tambah-laporan-stok
# Siap rilis
git checkout develop
git checkout -b release/v2.1.0
# Setelah QA selesai
git checkout main
git merge --no-ff release/v2.1.0
git tag -a v2.1.0 -m "Release v2.1.0"
git checkout develop
git merge --no-ff release/v2.1.0
Kapan Pakai Git Flow?
- Proyek dengan jadwal rilis tertentu (bukan continuous deployment)
- Tim besar dengan QA terpisah
- Produk yang butuh support multiple versi
Kelemahan
- Terlalu banyak branch untuk proyek kecil
- Proses merge panjang, rawan konflik kalau branch hidup lama
- Tidak cocok untuk tim yang deploy beberapa kali sehari
Model 2: GitHub Flow
GitHub Flow jauh lebih simpel. Hanya ada main dan feature branch. Cocok untuk tim yang melakukan continuous deployment - setiap merge ke main langsung di-deploy.
Cara Kerja
# Buat branch dari main
git checkout main
git checkout -b fix-validasi-form-order
# Kerjakan, commit, push
git add .
git commit -m "fix: validasi quantity tidak boleh negatif"
git push origin fix-validasi-form-order
# Buat Pull Request di GitHub
# Review → Approve → Merge → Auto deploy
Aturan Simpel GitHub Flow
mainselalu dalam kondisi deployable- Buat branch dari
mainuntuk setiap perubahan - Commit secara rutin ke branch tersebut
- Buka Pull Request saat butuh review atau sudah selesai
- Setelah di-review dan approved, merge ke
main - Deploy segera setelah merge
Kapan Pakai GitHub Flow?
- Tim kecil sampai menengah
- Proyek web yang di-deploy terus-menerus
- Startup atau produk yang iterasinya cepat
Model 3: Trunk-Based Development
Ini model paling sederhana dan makin populer di perusahaan besar seperti Google. Semua developer commit langsung ke main (trunk), dengan short-lived feature branch yang umurnya maksimal 1-2 hari.
Prinsip Utama
# Branch umurnya pendek, idealnya < 1 hari
git checkout main
git checkout -b small-refactor-auth
# Kerjakan perubahan kecil
git add .
git commit -m "refactor: pisahkan logic auth ke middleware"
git push origin small-refactor-auth
# Langsung buat PR, review cepat, merge
Feature Flag
Karena semua kode masuk ke main, fitur yang belum selesai disembunyikan pakai feature flag:
// Laravel example
if (Feature::active('new-dashboard')) {
return view('dashboard.v2');
}
return view('dashboard.v1');
Kapan Pakai Trunk-Based?
- Tim yang sudah punya CI/CD pipeline matang
- Organisasi yang menekankan continuous integration
- Developer yang sudah terbiasa commit kecil dan sering
Perbandingan Cepat
| Aspek | Git Flow | GitHub Flow | Trunk-Based |
|---|---|---|---|
| Kompleksitas | Tinggi | Rendah | Rendah |
| Cocok untuk rilis terjadwal | ✅ | ❌ | ❌ |
| Continuous deployment | ❌ | ✅ | ✅ |
| Tim besar | ✅ | ✅ | ✅ (butuh disiplin) |
| Learning curve | Tinggi | Rendah | Sedang |
Tips Praktis untuk Tim
1. Sepakati Konvensi Penamaan Branch
Pakai prefix yang konsisten supaya mudah dibaca:
feature/ → fitur baru
fix/ → perbaikan bug
hotfix/ → perbaikan darurat
chore/ → refactoring, update dependency
docs/ → dokumentasi
2. Tulis Commit Message yang Jelas
Pakai format Conventional Commits supaya changelog bisa di-generate otomatis:
# Format
<type>(<scope>): <deskripsi singkat>
# Contoh
feat(order): tambah fitur export laporan ke PDF
fix(auth): perbaiki session expired tidak redirect ke login
chore(deps): update Laravel ke versi 11.x
3. Rebase Sebelum Merge
Supaya history tetap bersih, biasakan rebase sebelum merge:
# Di feature branch
git fetch origin
git rebase origin/main
# Kalau ada konflik, selesaikan satu per satu
git add .
git rebase --continue
# Baru push dan merge
git push --force-with-lease origin feature/nama-fitur
4. Gunakan Protected Branch
Jangan biarkan siapa pun push langsung ke main. Set up branch protection:
- Require pull request review (minimal 1 reviewer)
- Require status checks to pass (CI harus hijau)
- Require branch to be up to date before merging
5. Jaga Branch Tetap Pendek
Semakin lama branch hidup, semakin besar kemungkinan konflik. Targetkan:
- Maksimal 2-3 hari untuk satu feature branch
- Kalau fiturnya besar, pecah jadi beberapa PR kecil
- Review PR dalam 24 jam supaya tidak menumpuk
Kesalahan Umum yang Harus Dihindari
Commit langsung ke main tanpa review. Ini resep bencana. Satu bug kecil bisa langsung masuk production tanpa ada yang cek.
Branch yang hidup berminggu-minggu. Merge conflict-nya bakal mengerikan. Lebih baik merge sering dalam porsi kecil.
Tidak pakai CI/CD. Tanpa automated testing, branching strategy apapun kurang efektif. Pastikan setiap PR minimal menjalankan unit test.
Force push ke shared branch. Jangan pernah git push --force ke branch yang dipakai orang lain. Gunakan --force-with-lease kalau memang perlu, dan hanya di branch pribadi.
Rekomendasi untuk Tim Indonesia
Berdasarkan pengalaman, untuk kebanyakan tim development di Indonesia:
- Tim 2-5 orang: GitHub Flow sudah lebih dari cukup. Simpel, mudah dipahami, langsung bisa jalan.
- Tim 5-15 orang: GitHub Flow dengan branch protection dan required review. Tambahkan CI/CD pipeline.
- Tim besar atau produk enterprise: Pertimbangkan Git Flow kalau ada siklus rilis formal, atau Trunk-Based kalau CI/CD sudah matang.
Yang paling penting bukan model mana yang dipilih, tapi konsistensi. Pilih satu, dokumentasikan, dan pastikan semua anggota tim mengikutinya.
Kesimpulan
Strategi git branching bukan sekadar teori - ini langsung berdampak pada produktivitas tim sehari-hari. Mulai dari yang simpel seperti GitHub Flow, dan tambahkan kompleksitas hanya kalau memang dibutuhkan. Pastikan setiap anggota tim paham alurnya, dan lengkapi dengan CI/CD serta code review untuk hasil maksimal.
Kalau kamu baru mulai mengatur workflow tim, coba GitHub Flow dulu selama sebulan. Evaluasi apakah ada pain point yang muncul, baru pertimbangkan untuk beralih ke model lain. Jangan over-engineer workflow dari awal - iterasi bertahap selalu lebih efektif.