Feature Branch — adalah teknik percabangan di Git di mana setiap fitur baru dikembangkan di cabang terpisah, terisolasi dari kode utama. Ini memungkinkan beberapa pengembang bekerja secara bersamaan pada tugas yang berbeda tanpa risiko merusak versi stabil proyek. Menurut Atlassian, 2024, Feature Branch adalah elemen kunci dari Git Flow dan digunakan di sebagian besar proyek komersial.
Poin Utama
feature/nama-fitur di Git Flow standar.Feature Branch (cabang fitur) — adalah cabang sementara di Git, dibuat dari develop untuk mengembangkan fungsionalitas terpisah. Berbeda dengan cabang jangka panjang main dan develop, cabang feature ada untuk waktu terbatas — dari beberapa jam hingga beberapa minggu.
Tujuan utama feature branch adalah mengisolasi perubahan yang terkait dengan satu tugas dari kode lainnya. Pengembang dapat bereksperimen, melakukan banyak commit, dan bahkan merusak kode di cabangnya tanpa memengaruhi pekerjaan anggota tim lainnya.
Setelah pengembangan selesai, cabang feature digabungkan kembali ke develop melalui Pull Request dengan peninjauan kode wajib. Setelah penggabungan, cabang biasanya dihapus untuk menjaga repositori tetap bersih.
Menurut Vincent Driessen, 2010, model Git Flow dengan cabang feature telah menjadi standar industri berkat pembagian tanggung jawab yang jelas antara berbagai jenis cabang.
Alur kerja dengan feature branch terdiri dari serangkaian langkah yang dilakukan pengembang untuk setiap fitur baru. Proses ini meminimalkan konflik penggabungan dan memastikan kontrol kualitas kode.
Sinkronisasi periodik dengan develop sangat penting. Semakin lama cabang feature hidup tanpa menggabungkan perubahan dari develop, semakin tinggi kemungkinan konflik pada penggabungan akhir.
| Frekuensi sinkronisasi | Risiko konflik | Kenyamanan pengembangan |
|---|---|---|
| Harian | Rendah | Memerlukan rebase atau merge sering |
| Mingguan | Sedang | Mode nyaman, konflik moderat |
| Bulanan | Tinggi | Risiko penyelesaian konflik merge yang kompleks |
| Tidak pernah | Kritis | Penggabungan mungkin tidak mungkin tanpa kehilangan data |
Penamaan cabang — bagian penting dari disiplin tim. Standar penamaan yang seragam memungkinkan dengan cepat menentukan tugas apa yang sedang dikerjakan dan siapa yang melakukannya.
feature/added-auth-module.feature/PROJ-42-add-login.feature/feat/analytics-dashboard.Menggunakan ID tugas dari JIRA, Trello, atau sistem lain adalah praktik terbaik. Ini secara otomatis menghubungkan kode dengan tugas dan menyederhanakan pencarian cabang melalui git log.
Pull Request (atau Merge Request di GitLab) — adalah permintaan untuk menggabungkan cabang feature ke develop. PR bukan sekadar operasi teknis, tetapi proses peninjauan kode tim yang meningkatkan kualitas kode dan menyebarkan pengetahuan di dalam tim.
PR yang baik berisi judul dengan deskripsi singkat tugas, tautan ke tiket, dan deskripsi perubahan. Pengembang harus menunjukkan apa yang sebenarnya dilakukan, file apa yang diubah, dan apakah ada risiko potensial untuk bagian lain dari proyek.
Tim meninjau kode di PR, meninggalkan komentar, meminta perubahan (change requests), dan menyetujui penggabungan (approve). Setelah disetujui, merge atau squash merge dilakukan.
Waktu rata-rata peninjauan PR dalam pengembangan mobile adalah 4 hingga 24 jam. Pustaka Danger mengotomatiskan sebagian pemeriksaan, menjalankan linter dan tes langsung di PR.
Setelah PR disetujui, cabang feature dapat digabungkan ke develop dengan berbagai cara. Pemilihan strategi penggabungan memengaruhi riwayat commit dan kemungkinan pengembalian perubahan.
Untuk proyek mobile dengan rilis sering, paling sering digunakan squash merge: memberikan riwayat bersih di develop, sementara detail pengembangan tetap ada di deskripsi PR dan tugas tracker.
Bahkan pengembang berpengalaman pun membuat kesalahan saat bekerja dengan cabang feature. Mengetahui masalah umum membantu menghindari kehilangan waktu dan data.
Cara terbaik untuk menghindari masalah ini adalah menyepakati aturan kerja di awal proyek dan menggunakan pemeriksaan otomatis di pipeline CI/CD.
Mari kita pertimbangkan skenario praktis: seorang pengembang memulai fitur autentikasi baru di aplikasi mobile. Dia membuat cabang feature, bekerja pada kode, dan menyelesaikan tugas dengan Pull Request.
# Memperbarui develop dan membuat cabang feature
git checkout develop
git pull origin develop
git checkout -b feature/add-login-screen
# Bekerja pada fitur: commit
git add src/ui/login/
git commit -m "Add login screen layout"
# Mengirim cabang feature ke server
git push origin feature/add-login-screen
# Sinkronisasi dengan develop (rebase)
git fetch origin develop
git rebase origin/develop
# Setelah PR disetujui: memperbarui local develop dan menghapus cabang
git checkout develop
git pull origin develop
git branch -d feature/add-login-screen
Perintah git branch -d menghapus cabang hanya setelah perubahannya sepenuhnya digabungkan. Jika cabang tidak digabungkan, Git akan menyarankan menggunakan git branch -D untuk penghapusan paksa — gunakan flag ini dengan hati-hati.
Pipeline CI/CD harus dijalankan untuk setiap cabang feature sebelum membuat PR. Ini memungkinkan deteksi masalah pada tahap awal, sebelum kode masuk ke peninjauan pengembang lain.
# GitHub Actions untuk memeriksa cabang feature
name: Feature Branch CI
on:
push:
branches:
- 'feature/**'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run tests
run: ./gradlew test
- name: Lint check
run: ./gradlew lint
Pipeline memeriksa apakah kode dikompilasi, tes lulus, dan gaya kode sesuai dengan standar yang diterima di tim. Hanya setelah lulus semua pemeriksaan, Pull Request dapat dibuat.
Pertanyaan yang Sering Diajukan
Ya, ini praktik standar. Setiap pengembang dapat bekerja di cabang feature-nya sendiri, dan semuanya disinkronkan dengan develop secara independen. Aturan utama — satu cabang untuk satu tugas, untuk menghindari ketergantungan cross-task dalam kode.
Lakukan git rebase origin/develop di cabang feature Anda. Jika muncul konflik — selesaikan satu per satu, commit akan ditulis ulang di atas status terakhir develop. Setelah rebase, diperlukan git push --force untuk memperbarui cabang remote.
Jika tugas dibatalkan, cabang feature dapat langsung dihapus. Gunakan git branch -d feature/name untuk cabang lokal dan git push origin --delete feature/name untuk cabang remote. Semua perubahan yang belum di-commit akan hilang.
Pada dasarnya sama. Tim yang berbeda menggunakan prefiks yang berbeda: feature/, task/, feat/. Tidak ada perbedaan dalam mekanika Git — semuanya adalah cabang sementara yang dibuat dari develop untuk pengembangan terisolasi.
Ya, ini praktik wajib. Cabang setelah penggabungan mengotori daftar referensi dan dapat menyebabkan kebingungan. Sebagian besar platform (GitHub, GitLab) menawarkan untuk menghapus cabang segera setelah merge PR, dan cabang lokal dihapus dengan perintah git branch -d.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga