Kursus
Saya mulai belajar Git sejak awal kuliah, tetapi alur kerja saya saat itu sangat dasar—semuanya terjadi di branch master. Kami baru mulai membuat branch terpisah ketika mulai berkolaborasi, dan itu pun branch tersebut hidup terlalu lama, sehingga proses merge menjadi menyakitkan dan membingungkan.
Semuanya berubah ketika saya mendapatkan pekerjaan penuh waktu pertama. Saya menemukan diagram GitFlow yang tampaknya rumit ini. Namun ternyata, itu justru memudahkan segalanya. GitFlow membawa keteraturan dalam kekacauan, dengan panduan jelas untuk mengerjakan fitur, mengelola rilis, serta menangani bugfix dan hotfix.
Dalam tutorial ini, saya akan menjelaskan cara kerja GitFlow, cara menyiapkan ekstensi GitFlow yang kuat, dan cara menggunakannya dalam pengembangan harian Anda. Baik Anda bagian dari tim atau mengelola proyek solo dengan banyak pengembang, GitFlow dapat meningkatkan produktivitas dan menjadi pengubah permainan!
Apa itu GitFlow?
GitFlow adalah model branching Git yang populer dan memberikan pendekatan terstruktur untuk mengelola codebase Anda, terutama dalam lingkungan kolaboratif. Diperkenalkan oleh Vincent Driessen dalam posting blog tahun 2010, GitFlow diadopsi secara luas karena dengan jelas mendefinisikan bagaimana dan kapan membuat branch untuk fitur, rilis, dan hotfix.
GitFlow membangun di atas kemampuan branching dan merging Git dengan memperkenalkan konvensi penamaan yang konsisten dan alur kerja yang transparan.

Diagram GitFlow. Gambar oleh penulis terinspirasi dari Vincent Driessen.
Alih-alih melakukan commit semua hal ke main atau master, GitFlow memperkenalkan branch khusus dengan tujuan spesifik, seperti:
develop: Branch integrasi untuk fitur baru. Di sinilah semua pengembangan berlangsung sebelum siap ke produksi.feature/*: Digunakan untuk mengerjakan fitur individual. Branch ini bercabang daridevelopdan digabungkan kembali ke sana.release/*: Membantu memfinalkan versi produksi baru. Branch ini memungkinkan Anda menyiapkan rilis tanpa “membekukan” branchdevelop.hotfix/*: Untuk perbaikan mendesak pada kode produksi. Branch ini dibuat darimasterdan digabungkan kemastersertadevelop.master(atau kini umumnyamain): Branch yang berisi kode stabil, siap produksi.
Alur ini membantu menjaga codebase tetap bersih dan proses rilis Anda dapat diprediksi.
Untuk mempelajari lebih lanjut tentang Git, saya sarankan mengecek Foundations of Git atau Intermediate Git.
GitFlow menawarkan manfaat utama berikut:
- Kolaborasi lebih baik: Semua orang tahu di mana harus melakukan commit perubahan dan dari mana bercabang.
- Pengembangan paralel: Tim dapat mengerjakan banyak fitur, rilis, atau perbaikan secara bersamaan tanpa konflik.
- Kesiapan rilis: Anda selalu memiliki gambaran jelas tentang apa yang siap ke produksi.
- Efisiensi hotfix: Masalah produksi yang mendesak dapat diperbaiki dan dirilis dengan cepat tanpa mengganggu proses pengembangan yang sedang berlangsung.
Menyiapkan GitFlow
Sebelum memanfaatkan model branching terstruktur GitFlow, Anda harus menyiapkannya di mesin Anda dan menginisialisasinya di repositori. Syukurlah, kedua langkah ini cukup mudah.
Untuk menggunakan GitFlow, Anda seharusnya sudah menginstal Git di mesin Anda. Anda dapat membaca lebih lanjut tentang pemasangan Git di Git Install Tutorial.
Menginstal GitFlow
GitFlow adalah ekstensi dari Git, jadi Anda perlu menginstalnya secara terpisah. Secara default, ekstensi ini tidak dibundel dengan Git. Proses instalasi bergantung pada sistem operasi Anda.
Untuk petunjuk lebih rinci tentang cara menginstal GitFlow, baca dokumentasi resmi.
Catatan: Meskipun ekstensi GitFlow di atas memudahkan pengelolaan branch fitur, rilis, dan hotfix dengan perintah sederhana, itu tidak benar-benar wajib. Anda dapat mengikuti alur kerja GitFlow menggunakan perintah Git standar—selama Anda konsisten dengan konvensi penamaan dan praktik merge. Alat ini sekadar mengotomatiskan dan menegakkan prosesnya, yang bisa bermanfaat untuk tim atau proyek yang lebih besar.
macOS
Jika Anda menggunakan Homebrew, yang merupakan manajer paket paling populer untuk macOS, jalankan:
brew install git-flow-avh
Linux (berbasis Debian/Ubuntu)
Jika Anda menggunakan sistem berbasis Debian seperti Ubuntu, gunakan:
sudo apt-get install git-flow
Windows
Jika Anda menggunakan Windows, Anda dapat memasang GitFlow melalui Git for Windows dan menambahkan Git Bash ke terminal Anda.
Untuk memeriksa apakah GitFlow telah terpasang, Anda dapat menjalankan:
git flow version
Inisialisasi GitFlow di repositori
Sebagai langkah pertama, Anda perlu memiliki repositori Git yang sudah diinisialisasi sebelum menggunakan GitFlow. Anda dapat membaca lebih lanjut di How to Initialize and Set Up a Git Repository.
Setelah GitFlow terpasang, Anda dapat menginisialisasinya di repositori Git yang sudah ada dengan:
git flow init
GitFlow akan meminta Anda mengonfigurasi beberapa pengaturan. Berikut rincian artinya dan cara memilih yang tepat:
- Nama branch: Anda akan diminta nama branch default.
- Nama branch produksi (default:
master) - Nama branch pengembangan (default
develop) - Prefiks untuk branch pendukung: GitFlow menggunakan konvensi penamaan untuk berbagai tipe branchnya.
- Branch fitur:
feature/ - Branch bugfix:
bugfix/ - Branch rilis:
release/ - Branch hotfix:
hotfix/ - Branch support:
support/(jarang digunakan dalam praktik) - Prefiks tag versi:
v(mis.v.1.2.0)
Default ini cocok untuk sebagian besar tim, tetapi Anda dapat menyesuaikannya agar sesuai dengan standar penamaan organisasi Anda.
Contoh keluaran inisialisasi:
git flow init
Which branch should be used for bringing forth production releases?
- master
Branch name for production releases: [master]
Branch name for "next release" development: [develop]
How to name your supporting branch prefixes?
Feature branches? [feature/]
Bugfix branches? [bugfix/]
Release branches? [release/]
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? [] v
Setelah menginisialisasi, Anda dapat mendorong branch develop ke repositori jauh. Anda dapat membaca lebih lanjut tentang cara push dan pull branch di Git Push and Pull Tutorial.
Menggunakan GitFlow untuk Pengembangan
Setelah GitFlow diinisialisasi di repositori Anda, Anda dapat mulai menggunakan model branching-nya untuk mengelola alur kerja pengembangan. GitFlow menyediakan perintah tingkat tinggi untuk mengerjakan fitur, rilis, dan hotfix, sehingga lebih mudah mempertahankan struktur dan menghindari kekacauan Git.
Di subbab berikut, kita akan mengeksplorasi GitFlow dalam praktik.
Membuat branch fitur
Branch fitur digunakan untuk mengembangkan fungsionalitas baru tanpa memengaruhi codebase utama.
Anda dapat membuat branch fitur dengan menjalankan:
git flow feature start <feature-name>
Perintah ini membuat branch baru dari develop bernama feature/<feature-name>. Anda dapat mulai mengembangkan fitur dan melakukan commit perubahan seperti biasa.
Menyelesaikan branch fitur
Saat fitur Anda selesai dan diuji, Anda dapat menyelesaikannya dengan:
git flow feature finish <feature-name>
Perintah ini melakukan hal berikut:
- Merge branch fitur Anda ke branch
develop. - Hapus branch lokal
feature/<feature-name>.
Jika Anda menemui konflik merge, selesaikan secara manual dan selesaikan merge menggunakan alur penyelesaian konflik standar Git.
Jika Anda bekerja di tim besar di mana pull request harus dibuat dan ditinjau terlebih dahulu, Anda tidak dapat langsung menggunakan perintah finish GitFlow, melainkan Anda bisa melakukan hal berikut:
- Commit pekerjaan Anda, lalu push branch:
git push origin feature/<feature-name>
- Buat pull request dari
feature/<feature-name>kedevelopdi GitHub, GitLab, dll. - Minta tinjauan, jalankan pengujian, dan dapatkan persetujuan.
- Setelah disetujui, merge melalui UI platform dan hapus branch.
Jika Anda ingin mempelajari lebih lanjut tentang GitHub dan cara menggunakannya, saya merekomendasikan kursus GitHub Foundations dan GitHub Concepts. Di tim lain, Anda mungkin mengikuti alur standar git flow feature finish, tetapi Anda perlu meminta tinjauan atas branch Anda sebelum menggabungkannya kembali ke develop dan menjalankan pengujian pada perubahan kode Anda untuk memastikan perilaku yang benar.
Membuat branch rilis
Branch rilis dibuat untuk menyiapkan versi produksi baru tanpa menghambat pengembangan yang sedang berjalan pada branch develop.
Untuk memulai rilis, jalankan perintah berikut:
git flow release start <version-number>
Ini akan membuat branch baru bernama release/<version-number>. Branch ini bercabang dari develop.
Di branch ini, Anda biasanya memfinalkan nomor versi, memperbaiki bug kecil, serta memperbarui dokumentasi dan changelog.
Menyelesaikan branch rilis
Setelah rilis Anda siap untuk produksi, selesaikan dengan:
git flow release finish <version-number>
Perintah ini akan:
- Merge branch rilis ke
masterdandevelop. - Memberi tag rilis di
master(mis.,v1.0.0). - Menghapus branch lokal
release/<release-number>.
Jangan lupa untuk mendorong perubahan dan tag Anda:
git push origin master
git push origin develop
git push --tags
# or in short
git push origin master develop --tags
Membuat branch hotfix
Hotfix digunakan untuk perbaikan produksi yang mendesak ketika bug ditemukan di branch master.
Untuk memulai hotfix:
git flow hotfix start <version-number>
Ini akan membuat branch hotfix/<version-number> dari master. Anda kini dapat menerapkan perubahan dan melakukan commit perbaikan.
Setelah selesai, akhiri dengan:
git flow hotfix finish <version-number>
Ini akan:
- Merge hotfix ke
masterdandevelop. - Memberi tag perbaikan pada
master. - Menghapus branch lokal `hotfix/<version-number>`.
Push perubahan lokal dan tag seperti biasa:
git push origin master develop --tags
Hotfix sangat berguna karena memungkinkan Anda memperbaiki masalah produksi dengan cepat tanpa mengganggu pengembangan yang sedang berjalan di branch develop.
Bayangkan beberapa fitur baru sudah digabungkan ke develop yang belum ingin Anda rilis, tetapi ada bug yang mendesak dan serius di aplikasi produksi yang perlu diperbaiki.
Di sinilah hotfix sangat membantu, karena bercabang dari master dan kemudian hanya digabungkan kembali ke develop.
Contoh Branching GitFlow
Mari kita bahas dua alur kerja umum, siklus pengembangan fitur dan rilis dengan hotfix, untuk melihat GitFlow beraksi dan membandingkannya dengan perintah Git tradisional.
Dengan melihat kedua sisi, Anda akan lebih memahami bagaimana ekstensi GitFlow menyederhanakan proses dengan merangkum beberapa langkah Git menjadi perintah yang sederhana dan terstandarisasi.
Jika Anda memerlukan ringkasan cepat tentang perintah Git tradisional, saya merekomendasikan Complete Git Cheat Sheet. Jika Anda ingin mendapatkan gambaran cepat tentang Git, bacalah GitHub and Git Tutorial for Beginners.
Alur kerja pengembangan fitur
Misalkan Anda mengimplementasikan fitur baru yang memungkinkan pengguna melakukan autentikasi ke aplikasi Anda. Anda menamai fitur ini user-authentication.
Menggunakan GitFlow:
git flow feature start user-authentication
# Work on the feature
git add .
git commit -m "feat: Implement basic user authentication"
# Once finished:
git flow feature finish user-authentication
git push origin develop
Sekarang menggunakan Git biasa:
# Create and switch to a new branch manually
git checkout -b feature/user-authentication develop
# Work on the feature
git add .
git commit -m "Implement basic user authentication"
# Once finished
git checkout develop
git merge feature/user-authentication
git branch -d feature/user-authentication
git push origin develop
Seperti yang Anda lihat, GitFlow mengurangi jumlah perintah dan, karenanya, tingkat kompleksitas. Ini juga lebih kecil kemungkinannya menimbulkan kesalahan, seperti tidak sengaja menggabungkan ke branch yang salah.
Untuk mempelajari lebih lanjut tentang cara merge di Git bekerja, baca Git Merge Tutorial: A Comprehensive Guide with Examples.
Sekarang, misalkan Anda sedang menyiapkan rilis 1.0.0. Namun tak lama setelah Anda merilis versi baru, ditemukan bug kritis yang perlu diperbaiki dengan hotfix.
Menggunakan GitFlow:
# Start a release
git flow release start 1.0.0
# Make final tweaks, update version numbers
git commit -am "Prepare release v1.0.0"
# Finish the release
git flow release finish 1.0.0
git push origin master develop --tags
Sekarang Anda telah menemukan bug, dan Anda perlu membuat hotfix:
# Start a hotfix
git flow hotfix start 1.0.1
# Apply the fix
git commit -am "Fix login issue in production"
# Finish the hotfix
git flow hotfix finish 1.0.1
git push origin master develop --tags
Dan melakukan semua ini lagi dengan perintah Git biasa:
# Release manually
git checkout -b release/1.0.0 develop
# Make changes
git commit -am "Prepare release v1.0.0"
# Merge manually
git checkout master
git merge release/1.0.0
git tag -a v1.0.0 -m "Release v1.0.0"
git checkout develop
git merge release/1.0.0
# Delete release branch
git branch -d release/1.0.0
git push origin master develop --tags
# Hotfix manually
git checkout -b hotfix/1.0.1 master
# Apply fix
git commit -am "Fix login issue in production"
git checkout master
git merge hotfix/1.0.1
git tag -a v1.0.1 -m "Hotfix v1.0.1"
git checkout develop
git merge hotfix/1.0.1
# Delete hotfix branch
git branch -d hotfix/1.0.1
git push origin master develop --tags
Praktik Terbaik Menggunakan GitFlow
GitFlow cukup kuat dan membantu Anda mengelola kode tim. Namun, agar mendapatkan manfaat maksimal dari struktur ini, Anda perlu mengikuti beberapa praktik terbaik.
Praktik ini membantu menjaga branch tetap bersih, mengurangi konflik merge, dan meningkatkan produktivitas tim, terutama dalam lingkungan kolaboratif.
Penamaan branch yang konsisten
Konsistensi adalah kunci dalam kolaborasi. Patuhi konvensi penamaan default GitFlow kecuali tim Anda memiliki alasan kuat untuk menyesuaikannya.
Pola penamaan yang direkomendasikan:
- Branch fitur:
feature/<feature-name> - Branch rilis:
release/<version-number> - Branch hotfix:
hotfix/<version-number>
Anda juga sebaiknya menggunakan kebab-case untuk nama multi-kata (mis., feature/user-authentication).
Perubahan kecil dan sering
Branch yang berumur panjang sering kali berujung pada merge yang menyakitkan dan pull request besar yang sulit ditinjau.
Saya tahu betul karena saya sudah beberapa kali melewati “neraka” konflik merge, dan Anda ingin menghindarinya jika memungkinkan!
Sebaliknya, buat branch fitur berumur pendek dan fokus pada satu tugas. Lakukan commit dan push secara berkala untuk menghindari kehilangan pekerjaan atau terlalu jauh menyimpang dari develop.
Perubahan yang lebih kecil dan bertahap lebih mudah diuji, ditinjau, dan diintegrasikan.
Sinkronisasi rutin dengan develop
Saat bekerja pada branch fitur, Anda tidak boleh tertinggal. Pastikan Anda rutin menarik perubahan terbaru dari branch develop untuk meminimalkan konflik merge nantinya:
git checkout feature/<your-feature>
git fetch origin
git rebase origin/develop
Tetap sinkron membuat integrasi lebih mulus dan menjaga perubahan Anda tetap kompatibel dengan fitur yang dibangun orang lain.
Tinjau dan uji sebelum merge
Meskipun GitFlow mendukung merge langsung dengan perintah seperti git flow feature finish, sebaiknya gunakan pull request (PR) atau merge request (MR) untuk semua merge ke develop dan master.
Manfaat:
- Memungkinkan alur kerja tinjauan kode dan persetujuan
- Memicu pemeriksaan CI/CD otomatis
- Menyediakan jejak audit perubahan yang jelas
Ini sangat krusial di lingkungan tingkat produksi di mana kontrol kualitas penting.
Pemecahan Masalah GitFlow
Bahkan dengan alur kerja terstruktur seperti GitFlow, masalah bisa muncul, terutama saat bekerja dalam tim atau pada branch yang berjalan lama.
Bagian ini akan membahas tantangan paling umum dan cara mengatasinya secara efektif.
Konflik merge
Konflik merge umum terjadi saat bekerja pada satu codebase dengan tim yang lebih besar dan memang mengganggu.Biasanya terjadi ketika dua branch memodifikasi baris kode yang sama.
Langkah menyelesaikan konflik merge:
- Hentikan proses
git flow finish. - Gabungkan branch secara manual ke targetnya:
git checkout develop
git merge feature/<your-feature>
- Git akan meminta Anda menyelesaikan konflik. Buka file yang konflik dan cari penanda konflik seperti ini:
<<<<<<< HEAD
Code from develop
=======
Code from feature branch
>>>>>>> feature/my-feature
- Edit dan rapikan kode secara manual.
- Setelah selesai, tandai file sebagai terselesaikan:
git add <resolved-file>
- Kemudian selesaikan merge dengan:
git commit -m “resolve merge conflict …”
Membersihkan branch kadaluarsa
Terkadang, repositori Anda berisi branch feature, release, atau hotfix yang sudah usang. Untuk menghindari kebingungan, jaga agar repositori Anda tetap bersih sebisa mungkin.
Anda dapat memperbaikinya dengan mengikuti langkah di bawah:
- Daftar semua branch lokal:
git branch
- Hapus branch lokal:
git branch -d <branch-name>
- Jika branch belum di-merge dan Anda yakin dapat dihapus:
git branch -D <branch-name>
- Hapus branch remote:
git push origin --delete <branch-name>
Penting untuk rutin memeriksa branch Anda dan membersihkan branch kadaluarsa agar repositori tetap sebersih mungkin.
Kesimpulan
GitFlow adalah kerangka kerja yang tangguh untuk kolaborasi, kejelasan, dan kendali dalam alur kerja pengembangan Anda. Baik mengerjakan proyek solo dengan lebih banyak orang terlibat atau berkontribusi pada tim besar, GitFlow membantu Anda tetap terorganisir dengan memisahkan secara jelas pengembangan fitur, rilis, dan hotfix.
Saat pertama kali menggunakan GitFlow, rasanya benar-benar mengubah permainan. Tidak ada lagi kekacauan merge. Tidak ada lagi menebak-nebak branch mana yang harus digunakan. Setiap pekerjaan memiliki tempatnya, dan setiap rilis mengikuti proses yang berulang dan andal. Seiring waktu, saya memperkenalkan GitFlow ke setiap tim yang saya ajak bekerja. Dan setiap kali, itu membawa lebih banyak struktur, kolaborasi yang lebih mulus, dan lebih sedikit kesalahan.
Dalam tutorial ini, Anda telah mempelajari:
- Apa itu GitFlow dan mengapa bermanfaat
- Cara memasang dan menginisialisasi GitFlow
- Cara bekerja dengan fitur, rilis, dan hotfix
- Praktik terbaik untuk menghindari masalah umum
- Cara mengadaptasi GitFlow ke alur kerja modern menggunakan pull request
Jika Anda siap membawa alur kerja Git ke tingkat berikutnya, cobalah menggunakan GitFlow di proyek berikutnya. Dan jika Anda sudah terbiasa dengan dasar-dasarnya, mulai pertimbangkan untuk mengintegrasikannya dengan pipeline CI/CD tim Anda, proses tinjauan, atau bahkan GitHub Actions.
FAQs
Apakah GitFlow masih relevan dalam alur kerja pengembangan modern?
Ya, GitFlow tetap berguna, terutama untuk tim yang berorientasi rilis. Namun, beberapa tim lebih memilih model yang lebih sederhana seperti trunk-based development atau GitHub Flow untuk iterasi yang lebih cepat.
Bisakah saya menggunakan GitFlow dengan GitHub, GitLab, atau Bitbucket?
Tentu. GitFlow bekerja mulus dengan semua platform berbasis Git. Anda dapat menggunakan GitFlow CLI secara lokal dan mengintegrasikannya dengan pull request, CI/CD, dan proses tinjauan pada platform tersebut.
Apa alternatif GitFlow?
Alternatifnya termasuk GitHub Flow (ideal untuk continuous delivery), GitLab Flow (menggabungkan alur berbasis fitur dan lingkungan), serta trunk-based development untuk pengiriman cepat.
Apakah GitFlow berfungsi dengan pipeline CI/CD?
Ya, GitFlow cocok dipasangkan dengan CI/CD. Anda dapat mengotomatiskan build dan deployment dari branch develop, release, atau master bergantung pada pengaturan Anda.
Bagaimana jika saya tidak ingin menggunakan alat GitFlow CLI?
Tidak masalah—Anda dapat mengikuti prinsip GitFlow secara manual menggunakan perintah Git standar. CLI hanya membantu menegakkan konvensi penamaan dan penggabungan.
Berapa lama sebaiknya branch fitur GitFlow bertahan?
Idealnya, branch fitur harus berumur pendek—hanya beberapa hari. Ini mengurangi risiko konflik merge dan membuat perubahan lebih mudah diuji dan ditinjau.
Bisakah saya menyesuaikan nama dan prefiks branch GitFlow?
Ya. Selama inisialisasi, GitFlow memungkinkan Anda memilih nama dan prefiks Anda sendiri agar sesuai dengan konvensi penamaan atau strategi deployment tim Anda.
Bagaimana GitFlow menangani bugfix berbeda dari hotfix?
Branch bugfix (opsional) digunakan selama pengembangan dan bercabang dari develop. Sementara itu, hotfix adalah patch mendesak untuk produksi dan bercabang dari master.
Haruskah saya selalu menggunakan pull request dengan GitFlow?
Meskipun tidak wajib, menggunakan pull request menambahkan lapisan tinjauan, pengujian, dan keterlacakan—sangat direkomendasikan, terutama dalam pengaturan tim.
Saya adalah Cloud Engineer dengan fondasi kuat di bidang Teknik Elektro, machine learning, dan pemrograman. Karier saya dimulai di ranah visi komputer dengan fokus pada klasifikasi citra, sebelum beralih ke MLOps dan DataOps. Saya mengkhususkan diri dalam membangun platform MLOps, mendukung data scientist, dan menghadirkan solusi berbasis Kubernetes untuk menyederhanakan alur kerja machine learning.

