Git Branching Strategy: Branching Model untuk Tim
Pernah nggak sih ngerasa kebingungan saat kerja bareng tim pakai Git? Satu orang bikin branch, satu lagi langsung push ke main, ada yang lupa merge, dan tiba-tiba kode yang diproduksi udah broken sebelum bisa ditarik siapa pun? 🤯
Kalau pernah, tenang aja — itu tanda tim kamu butuh branching strategy yang jelas.
Di tutorial kali ini, kita bakal bahas berbagai model branching di Git yang populer dipakai tim-tim developer. Mulai dari yang paling "formal" sampai yang paling simpel, dan kapan harus pakai yang mana.
Table of Contents
- Kenapa Branching Strategy Penting?
- Konsep Dasar Branching di Git
- Git Flow
- GitHub Flow
- GitLab Flow
- Trunk-Based Development
- Kapan Pakai yang Mana?
- Tips Praktis untuk Tim
- Kesimpulan
Kenapa Branching Strategy Penting?
Bayangkan kamu punya proyek web yang dikerjakan bareng 5 orang. Semua ngoding di satu branch yang sama. Tanpa aturan yang jelas, kamu bakal mengalami:
- Merge conflict yang tiada habisnya
- Kode broken yang ke-deploy ke produksi
- Sulit mengontrol fitur mana yang udah siap dan mana yang belum
Branching strategy itu kayak aturan jalan raya untuk tim developer. Tanpa rambu-rambu, semua orang bisa jalan ke mana aja dan akhirnya tabrakan.
Konsep Dasar Branching di Git
Sebelum masuk ke strategi spesifik, pahami dulu istilah-istilah dasar:
| Branch | Fungsi |
|---|---|
main / master | Branch utama, selalu production-ready |
develop | Branch integrasi untuk fitur-fitur yang sedang dikerjakan |
feature/* | Branch untuk mengerjakan fitur baru |
release/* | Branch untuk persiapan release baru |
hotfix/* | Branch untuk perbaikan darurat di produksi |
Git Flow
Git Flow adalah model branching yang dipopulerkan oleh Vincent Driessen pada tahun 2010. Ini adalah salah satu strategi branching paling terstruktur yang banyak dipakai tim-tim besar.
Struktur Branch
main (production)
│
├── hotfix/fix-payment-bug
│
└── release/v2.1.0
│
└── develop
├── feature/user-auth
├── feature/payment-system
└── feature/dashboardCara Pakai
# Inisialisasi Git Flow
git flow init
# Mulai fitur baru
git flow feature start user-authentication
# ... kerja, commit ...
git commit -m "feat: add login form component"
git commit -m "feat: implement JWT token handling"
git flow feature finish user-authentication
# Persiapan release
git flow release start v2.1.0
# ... update version, CHANGELOG ...
git commit -m "chore: bump version to 2.1.0"
git flow release finish v2.1.0
# Hotfix (perbaikan darurat)
git flow hotfix start fix-payment-crash
# ... fix bug ...
git commit -m "fix: handle null pointer in payment"
git flow hotfix finish fix-payment-crashKelebihan & Kekurangan
- ✅ Sangat terstruktur dan jelas
- ✅ Cocok untuk proyek dengan jadwal release tetap
- ❌ Terlalu kompleks untuk proyek kecil atau startup
- ❌ Banyak branch yang harus dikelola
GitHub Flow
GitHub Flow adalah model branching yang lebih simpel, hanya menggunakan satu branch utama (main) dan branch fitur. Semua perubahan masuk ke main melalui pull request.
Prinsip Utama
- Branch
mainselalu bisa di-deploy - Semua perubahan harus lewat pull request dan code review
- Setelah merge, langsung deploy ke produksi
Alur Kerja
main ──●──●──●──●──●──●── (production ready)
\ / \ /
\/ \/
feature-A feature-BCara Pakai
# Buat branch dari main
git checkout main
git pull origin main
git checkout -b feature/add-search
# Kerja dan commit
git add .
git commit -m "feat: add search with debounce"
git push origin feature/add-search
# Buka pull request
gh pr create --title "feat: Add search functionality"
# Code review → approve → merge → deployKelebihan & Kekurangan
- ✅ Simpel dan mudah dipahami
- ✅ Cocok untuk continuous deployment
- ❌ Kurang cocok untuk release cycle yang panjang
- ❌ Butuh discipline tinggi untuk menjaga
mainstabil
GitLab Flow
GitLab Flow adalah kompromi antara Git Flow yang kompleks dan GitHub Flow yang terlalu simpel. Fitur utamanya: branch main + branch environment + branch release.
Dua Pola Utama
Pola Environment Branching:
main ──────●─────●─────●─────
\ \ \
v v v
staging productionPola Release Branching (multi-version support):
main ──────●─────●─────●─────
\ \ \
v v v
17.0 17.1 17.2Cara Pakai
# Kerja di fitur, push ke main setelah review
git checkout -b feature/new-api
git commit -m "feat: add /api/users endpoint"
# ... MR, review, merge ke main ...
# Promote ke staging
git checkout staging
git merge main
git push origin staging
# Deploy ke staging otomatis
# Setelah QA approve, promote ke production
git checkout production
git merge staging
git push origin production
# Deploy ke production otomatisKelebihan & Kekurangan
- ✅ Fleksibel, bisa disesuaikan dengan kebutuhan tim
- ✅ Ada mekanisme promosi environment yang jelas
- ❌ Butuh pemahaman lebih dalam tentang kebutuhan tim
Trunk-Based Development
Trunk-Based Development adalah model di mana semua developer bekerja di satu branch utama. Branch fitur bersifat sangat pendek (paling lama 1-2 hari) atau bahkan nggak ada sama sekali. Ini model yang dipromosikan oleh Google, Facebook, dan banyak perusahaan besar.
Prinsip Utama
- Semua orang kerja di
main - Branch fitur harus pendek (idealnya < 1 hari)
- Gunakan feature flags untuk mengontrol fitur baru
- Continuous integration diutamakan
Contoh Implementasi
// Feature flags
const featureFlags = {
new_checkout: process.env.FF_NEW_CHECKOUT === 'true',
dark_mode: process.env.FF_DARK_MODE === 'true',
};
// Di kode kamu
function CheckoutComponent() {
if (featureFlags.new_checkout) {
return <NewCheckout />;
}
return <LegacyCheckout />;
}# Workflow harian
git pull origin main
git checkout -b feat/short-lived
# ... kerja, commit, push (dalam hitungan jam) ...
git push origin feat/short-lived
# Buka MR kecil, review cepat, merge
git branch -d feat/short-livedKelebihan & Kekurangan
- ✅ Sangat cepat untuk continuous deployment
- ✅ Mengurangi merge conflict karena branch selalu pendek
- ❌ Butuh CI/CD pipeline yang sangat kuat
- ❌ Testing harus sangat menyeluruh
Kapan Pakai yang Mana?
| Strategi | Cocok untuk... |
|---|---|
| Git Flow | Tim besar, rilis terjadwal (bulanan/quarterly), banyak environment |
| GitHub Flow | Startup, web app, continuous deployment sederhana, tim kecil-menengah |
| GitLab Flow | Butuh environment bertahap, multi-version support, GitLab ecosystem |
| Trunk-Based | CI/CD mature, continuous deploy agresif, developer senior, siap feature flags |
Tip: Mulai dari yang sederhana (GitHub Flow), upgrade ke strategi yang lebih kompleks kalau dibutuhkan.
Tips Praktis untuk Tim
1. Dokumentasikan Strategy
Buat file BRANCHING.md di root repo:
# Branching Strategy
- `main` — Production code, always deployable
- `feature/*` — New features, from main
- `bugfix/*` — Bug fixes, from main
## Rules
- Never force push to main
- All changes need approval
- CI must pass before merge2. Branch Naming Convention
feature/user-registration
bugfix/login-error-mobile
hotfix/security-patch-xss
release/v2.1.03. Auto-Cleanup Branch
# .github/workflows/cleanup.yml
name: Branch Cleanup
on:
pull_request:
types: [closed]
jobs:
delete-branch:
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v6
with:
script: |
github.rest.git.deleteRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: `heads/${context.headRef}`
})4. Conventional Commits
feat: menambahkan fitur search
fix: memperbaiki bug login di mobile
docs: update API documentation
test: menambahkan unit test untuk paymentKesimpulan
Git branching strategy bukan soal mana yang paling "keren" — tapi mana yang paling cocok untuk situasi tim kamu sekarang.
Yang terpenting:
- Pilih satu strategi dan konsisten dipakai seluruh tim
- Dokumentasikan supaya semua orang paham
- Review dan adapt setiap beberapa bulan
- Jangan takut berubah kalau strategi yang sekarang udah gak cocok
Branching strategy yang bagus itu yang bikin tim kamu lebih produktif, bukan yang bikin workflow jadi lebih ribet.
Selamat mencoba, dan semoga coding session kamu dan tim jadi lebih lancar! 🚀
Punya pengalaman pakai branching strategy tertentu? Tulis di kolom komentar, yuk!
Tulisan lain
JsonViewer: Visualisasi JSON yang Interaktif
· 8 menit baca
Clean Code: Tips Menulis Kode yang Rapi dan Maintainable
· 5 menit baca
TheAlgorithms/Python: Semua Algoritma dalam Python
· 7 menit baca
JavaScript Algorithms: Pola & Struktur Data untuk Developer
· 14 menit baca