Penggunaan Branch Feature pada Git Flow
Published: 2022-08-11 02:19:00

![Photo by Richy Great on Unsplash](https://images.unsplash.com/photo-1590595906931-81f04f0ccebb?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=2070&q=80)

Terdapat beberapa macam branching workflow yang dapat digunakan oleh pengguna git. Diantaranya Git Flow, Github Flow, Gitlab Flow, dan One Flow. Penjelasan lengkapnya seperti yang dijelaskan dalam artikel [4 Branching Workflows For Git](https://medium.com/@patrickporto/4-branching-workflows-for-git-30d0aaee7bf). 

Salah satu yang terkenal dan kebetulan digunakan di perusahaan saya sekarang, adalah Git Flow.  
Git Flow dipublikasikan oleh [Vincent Driessen](https://nvie.com/about/) dan sangat populer karena cocok untuk kolaborasi tim dan scaling the development team. Info selengkapnya terdapat [disini](https://nvie.com/posts/a-successful-git-branching-model/). 

## Perkenalan
 

Branch utama dalam Git FLow adalah : 

1. **Master** merupakan branch yang menyimpan official release history. Jadi hanya berisi kode yang di-deploy ke production-server, sudah lolos testing, dan dirilis. 

2. **Develop** merupakan branch pre-production yang digunakan untuk development yang nantinya memiliki branch feature, release, dan bugfix. Jadi, penambahan fitur baru, perbaikan kode, dan development yang dilakukan oleh developer — developer lain berada pada branch ini. 

> Dalam Git Flow juga dapat menandai semua commit pada branch master dengan version number. 

## Cara Installasi
 

Disini kita bisa menggunakan versi CLI maupun versi extension di editor Visual Studio Code (VSCode). Namun, karena saya terbiasa menggunakan CLI, maka saya lebih nyaman menggunakan CLI. Karena menurut saya, penggunaan extension di editor VSCode cukup membuat saya bingung dan takut terjadi kesalahan (_human error on click_). Sehingga saya hanya menggunakan beberapa fitur saja. Namun semua itu kembali kepada kalian yang menggunakan. Disini saya akan mengulas cara installasi di keduanya. 

### Installasi di CLI
 

Windows: ikuti instruksi disini. git-flow-avh sudah termasuk di dalam paket Git for Windows. 

Linux: sudo apt-get install git-flow 

Untuk informasi instalasi pada OS yang lainnya, dapat dilihat di [installasi gitflow-avh](https://github.com/petervanderdoes/gitflow-avh/wiki/Installation). 

### Installasi Extension di VSCode
 
1. Cari extension “ gitflow” di VSCode. 

2. Biasanya yang saya gunakan adalah extension milik vector-of-bool : 

![Extension Gitflow by dokumentasi penulis](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mz7ezwzmj4th4eycn9vv.png) 

## Penggunaan
 

Penggunaan yang akan saya jelaskan disini adalah menggunakan CLI. Karena jika menggunakan extension, sudah terdapat panduan yang dapat di ikuti. 

1. Langkah pertama yang harus dilakukan adalah melakukan inisialisasi git flow untuk local repo : 

```
git flow init -d
```
![Git Flow Init -d by dokumentasi penulis](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3pnntzu808byd9eg55f0.png) 

**-d** menandakan bahwa kita menggunakan versi default dari git flow. 
Perintah ini akan membuat 2 branch, yaitu **master** dan **develop** 
![Branch default Git Flow by dokumentasi penulis](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/shjggqkm0fniwopfwej6.png) 

2.Selain itu, kita juga otomatis checkout ke branch develop 

3.Kemudian juga otomatis ada initial commit 
![Initial Commit by dokumentasi penulis](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2122hp39r8m7ounc6mzt.png) 

### Buat Feature
 
4.Selanjutnya, kita dapat melakukan develop project. Jika kita akan menambahkan fitur, kita kerjakan di branch feature dengan membuat branch feature terlebih dahulu dengan perintah : 

```
git flow feature start <nama_feature>
```
![Feature Start by dokumentasi penulis](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nt62lxqsugayqxczxu9p.png)

5.Sekarang kita sudah ada di branch feature/function-balances. Kita dapat mulai ngoding disini untuk membuat fitur tersebut. 
![Ada di branch feature/<nama_feature> by dokumentasi penulis](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xxqo5hf52y0pafu0swmv.png)  

6.Jika telah selesai membuat fitur, cek status perubahan menggunakan perintah : 

```
git status
```
![Git status by dokumentasi penulis](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wygriq8gdrgym1s0zww5.png) 

7.Sebelum melakukan commit, pastikan file yang berubah telah di add. Kita boleh memasukkan semua file dalam satu commit (agar lebih cepat) atau boleh juga jika ingin setiap satu file dalam satu commit. Namun disini saya memasukkan semua file dalam satu commit. 

```
git add . 

git commit -m "<message>"
```
![Git Add dan Commit All Changes by dokumentasi penulis](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6pri04n2zbxxkw63q0gv.png) 

8.Jika git status sudah seperti dibawah ini, maka artinya perubahan yang kita lakukan sudah selesai kita commit semua. 

![Status Nothing To Commit by dokumentasi penulis](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/siglm9ies59sddm804j0.png)

### Publish Feature Untuk Review

9.Setelah kita melakukan perubahan, sebaiknya feature kita dapat di review dahulu oleh anggota tim yang lain. Sehingga feature di publish terlebih dahulu. 

```
git flow feature publish <nama_feature>
```
![Publish Feature Untuk di Review by dokumentasi penulis](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/foee80a3bamq0fxfpciw.png)

10.Kita buat PR (Pull Request) ke branch **develop**. PR digunakan di **Github**, namun jika menggunakan **Gitlab**, maka namanya ada **Merge Request**. Disini saya menggunakan github. 
![PR di Github by dokumentasi penulis](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b8hsiv6m3a2ytw54ew1v.png) 

Klik compare & pull request untuk membuat PR ke branch **develop**. 

11.Setelah code review selesai, maka bisa merge melalui web atau melalui terminal dengan perintah : 

```
git flow feature finish <nama_feature>
```
![Finish Feature from review by dokumentasi penulis](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vimdlaen198sy4xwpfcb.png)  

12.Lakukan `push` ke branch develop 
![Push ke develop by dokumentasi penulis](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/59zhzazar783uahycnb7.png)  

13.Karena branch **feature** sudah di merge ke **develop** dan tidak digunakan lagi, maka branch feature di local komputer kita `bisa kita hapus`. 

> Baik sekian penggunaan git flow melalui CLI kali ini.  
> Jika menggunakan extension VSCode dapat lebih mudah karena tinggal klik klik saja. Namun penggunaan yang nyaman yang mana, itu kembali lagi kepada masing — masing developer yang menggunakan.
 

Source: 

[4 branching workflows for Git](https://medium.com/@patrickporto/4-branching-workflows-for-git-30d0aaee7bf)

[A successful Git branching model](https://nvie.com/posts/a-successful-git-branching-model/)
[Gitflow Workflow | Atlassian Git Tutorial](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow)
[Git Flow 01 - Intro](https://masputih.com/2017/11/git-flow-01-intro)

[Gitflow in Practice](https://medium.com/easyread/gitflow-in-practice-1d8a2bbdc3a1) 

[Gitflow — Branch Guide](https://medium.com/@rafavinnce/gitflow-branch-guide-8a523360c053) 

[Git-flow : The right way to go](https://medium.com/@olivier.bossel/git-flow-the-right-way-to-go-f2a65c315818)