Git Flow untuk Pemula yang Mau Tampil Pro

By Liu Purnomo
Picture of the author
Published on
Git Flow untuk Pemula yang Mau Tampil Pro

Halo, teman-teman developer yang keren! Kalau kamu lagi belajar Git dan ingin terlihat seperti pro di depan teman-teman tim, yuk kita bahas soal Git Flow!

Git Flow itu kayak resep rahasia supaya tim kamu nggak saling tabrakan saat ngoding bareng.

Artikel ini akan membahas semua yang kamu butuhkan, mulai dari pengantar, teknik penamaan branch, merge, sampai trik menulis pesan commit yang rapi (dan bahkan berwarna).

Oke, kita mulai!

Hi there! Want to support my work?

Table of Contents

1. Apa Itu Git Flow?

Git Flow adalah metode kerja yang rapi untuk mengelola kode di Git, terutama saat kerja tim.

Intinya, Git Flow ini bikin alur kerja jadi lebih terstruktur.

Biasanya, kita pakai branch seperti:

  • Main (atau Master) : Tempat kode yang sudah stabil (bisa langsung dipakai).

  • Development : Tempat fitur-fitur baru dikembangkan sebelum masuk ke main.

  • Feature, Hotfix, Release : Untuk kebutuhan spesifik (kita bahas nanti, santai aja).

Dengan Git Flow, setiap orang tahu harus kerja di mana dan kapan waktunya merge.

Hasilnya? Konflik kode berkurang, tim jadi lebih produktif.

Kembali ke atas

2. Kenapa Git Flow Penting

Menurut Chat GPT

  • Konsistensi: Membantu tim memiliki pola kerja yang seragam, sehingga meminimalkan kebingungan.

  • Kolaborasi: Mempermudah koordinasi antara anggota tim dalam pengembangan fitur atau perbaikan bug.

  • Keberlanjutan: Memastikan perubahan kode dapat diintegrasikan dan dirilis dengan aman tanpa mengganggu stabilitas sistem.

  • Skalabilitas: Memungkinkan pengelolaan pengembangan skala kecil hingga besar dengan struktur branch yang terorganisir.

Menurut Saya

Jadi penting karena bisa menjadi style guide untuk kerja tim, dengan style guide ini kita jadi bisa:

  • Menghindari kesalahan karena perbedaan interpretasi cara kerja.

  • Membuat proses review kode lebih cepat dan efisien.

  • Mempermudah pelacakan perubahan dengan konvensi penamaan branch dan commit yang jelas.

  • Membantu tim baru memahami dan mengikuti alur kerja dengan cepat.

Kembali ke atas

3. Teknik Penamaan Branch

Kamu pasti pernah bingung, β€œIni branch namanya apa, ya? Kok, updatefix-final-finalest gini?” Nah, biar nggak absurd, berikut panduan simpel buat nama branch kamu:

A. Branch Utama:

A.1. master atau main

  • Branch ini selalu berisi kode yang siap rilis.

  • Jangan pernah push langsung ke sini! Semua perubahan harus lewat Pull Request (PR).

A.2. development

  • Tempat ngumpulin semua fitur sebelum akhirnya masuk ke master.

  • Semua branch fitur berangkat dari sini dan kembali ke sini.

B. Branch Pendukung:

B.1. feature/nama-fitur ✨

  • Buat nambahin fitur baru.

  • Harus dibuat dari development dan di-merge balik ke development setelah selesai.

  • Contoh: feature/login-ui, feature/api-integration

B.2. hotfix/nama-perbaikan πŸ› οΈ

  • Buat perbaikan darurat di master tanpa harus nunggu pengembangan lain.

  • Dibuat dari master, setelah selesai di-merge ke master dan development.

  • Contoh: hotfix/security-patch

B.3. release/nama-rilis πŸŽ‰

  • Dipakai buat persiapan rilis versi baru.

  • Dibuat dari development, setelah selesai di-merge ke master dan develop.

  • Contoh: release/v1.2.0

Tips: Gunakan nama yang singkat, jelas, dan deskriptif. Jadi, nggak ada lagi nama kayak test atau cobacoba!

Kembali ke atas

4. Teknik Merge yang Benar

Saat waktunya merge, lakukan dengan hati-hati, ya. Ada dua teknik yang sering digunakan:

  • Fast-forward Merge :

Ini untuk situasi sederhana, di mana nggak ada cabang lain yang berubah di antara pekerjaan kamu.

git merge feature/login-page

Hi there! Want to support my work?

  • Merge Commit :

Kalau ada banyak perubahan paralel, gunakan ini. Semua history perubahan dicatat, sehingga lebih jelas untuk melacak apa yang terjadi.

git merge --no-ff feature/login-page

Tips tambahan: Sebelum merge, biasakan untuk pull dulu dari branch utama biar konflik bisa diminimalkan.

A. Teknik Merge yang Anti Ribet

Feature Branch ke Develop β†’ Rebase & Squash Merge πŸ—οΈ

git checkout development 

git pull origin development 

git checkout feature/awesome-feature 

git rebase develop 

git checkout develop 

git merge --squash feature/awesome-feature

*(Biar history commit-nya nggak berantakan!)

Release ke Master & Develop β†’ Merge Tanpa Fast-Forward

git checkout master 

git merge --no-ff release/v1.2.0 

git tag -a v1.2.0 -m "Release versi 1.2.0" 

git checkout develop 

git merge --no-ff release/v1.2.0

Hotfix ke Master & Develop β†’ Merge dengan Fast-Forward

git checkout master 

git merge hotfix/critical-bug 

git checkout develop 

git merge hotfix/critical-bug

Kembali ke atas

5. Penulisan Pesan Commit

Pesan commit adalah catatan kecil tentang apa yang kamu kerjakan. Banyak orang malas, akhirnya cuma nulis β€œupdate” atau β€œfix bug”.

Plis, jangan kayak gitu. Kamu bisa bikin pesan commit lebih bermakna dan mudah di pahami.

A. Format pesan commit

A.1 Format: [STATUS]<tipe>(<scope>): <deskripsi singkat>

[GREEN] feat(auth): Tambahkan autentikasi JWT (#42)

[RED] fix(api): Perbaiki bug validasi input form (#38)

[YELLOW] docs(readme): Update README dengan contoh konfigurasi

A.2 Kode Status

  • [WIP] β†’ Work in Progress.

  • [GREEN] β†’ Kode sudah siap di-merge.

  • [RED] β†’ Masih ada bug atau perlu diperbaiki.

  • [BLUE] β†’ Perubahan pada struktur kode tanpa mengubah fungsionalitas.

  • [YELLOW] β†’ Perubahan di dokumentasi.

  • [PURPLE] β†’ Perubahan minor seperti update dependency.

A.3 Tipe Commit

  • feat: Penambahan fitur baru

  • fix: Perbaikan bug

  • docs: Perubahan dokumentasi

  • style: Perubahan gaya kode (indentasi, format, dll.)

  • refactor: Refaktor kode tanpa mengubah fungsi

  • test: Penambahan atau perbaikan pengujian

  • chore: Pembaruan konfigurasi atau dependensi

Kembali ke atas

6. Alur Git Flow yang Ideal

Hi there! Want to support my work?

A. Mulai Fitur Baru

git checkout development

git pull origin development

git checkout -b feature/nama-fitur

B. Coding, Commit, dan Push ke Remote πŸ–₯️

git add .

git commit -m "[GREEN] feat: Tambahkan fitur X"

git push origin feature/nama-fitur

C. Buat PR ke development dan Review πŸ”

Gunakan template berikut untuk konsistensi:

## Deskripsi
Jelaskan apa yang telah diubah.

## Issue Terkait
- Closes #{nomor-issue}

## Langkah Pengujian
1. Langkah pertama
2. Langkah kedua

## Checklist
- [ ] Kode telah diuji secara lokal
- [ ] Dokumentasi diperbarui (jika diperlukan)

D. Merge ke development setelah review selesai 🎯

E. Siapkan Release πŸ“¦

Gunakan format semantik: v{major}.{minor}.{patch}

  • major: Perubahan besar atau kompatibilitas rusak

  • minor: Fitur baru tanpa merusak kompatibilitas

  • patch: Perbaikan bug

git checkout development

git checkout -b release/v1.2.0

F. Fix Bug, Merge ke master, dan Tag Versi Baru πŸ”–

git checkout master

git merge --no-ff release/v1.2.0

git tag -a v1.2.0 -m "Release v1.2.0"

git push origin v1.2.0

G. Memperbaiki Bug di Produksi

Buat branch hotfix

git checkout -b hotfix/{deskripsi-bug}

Perbaiki bug, commit, dan push.Merge ke master dan development.

TIPS SUPER PENTING !!!

βœ… Selalu buat branch dari development, kecuali untuk hotfix.

βœ… Pakai Pull Request (PR) & Code Review sebelum merge.

βœ… Jangan commit langsung ke master (itu dosa besar dalam dunia Git! πŸš«πŸ˜‚).

βœ… Pakai tagging untuk menandai versi yang sudah rilis.

βœ… Simpan .gitignore yang rapi supaya nggak nge-push file nggak penting.

Kembali ke atas

7. BONUS – List git command yang biasa digunakan

Konfigurasi Git

git config --global user.name "Nama Anda" β†’ Mengatur nama pengguna untuk Git.

git config --global user.email "email@domain.com" β†’ Mengatur email pengguna untuk Git.

git config --list β†’ Melihat konfigurasi Git yang telah disimpan.

Inisialisasi & Clone Repository

git init β†’ Membuat repository Git baru di dalam folder saat ini.

git clone <url-repo> β†’ Mengunduh repository dari remote server ke lokal.

Menambahkan & Menyimpan Perubahan

git status β†’ Melihat status file yang telah diubah, ditambahkan, atau dihapus.

git add <file> β†’ Menambahkan file ke dalam staging area.

git add .β†’ Menambahkan semua file yang berubah ke staging area.

git commit -m "Pesan commit" β†’ Menyimpan perubahan ke repository dengan pesan tertentu.

git commit -am "Pesan commit" β†’ Menyimpan perubahan tanpa perlu git add.

Melihat Riwayat Perubahan

git log β†’ Menampilkan riwayat commit yang telah dilakukan.

git log --oneline β†’ Menampilkan log commit dalam satu baris.

git diff β†’ Menampilkan perbedaan antara perubahan yang belum di-stage.

git diff --staged β†’ Menampilkan perbedaan pada perubahan yang telah di-stage.

Mengelola Branch

git branch β†’ Melihat daftar branch dalam repository.

git branch <nama-branch> β†’ Membuat branch baru.

git checkout <nama-branch> β†’ Berpindah ke branch tertentu.

git switch <nama-branch> β†’ Alternatif git checkout untuk berpindah branch.

git checkout -b <nama-branch> β†’ Membuat dan langsung berpindah ke branch baru.

git merge <nama-branch> β†’ Menggabungkan branch tertentu ke branch saat ini.

git branch -d <nama-branch> β†’ Menghapus branch yang sudah tidak digunakan.

Mengelola Remote Repository

git remote -v β†’ Melihat daftar remote repository yang terhubung.

git remote add origin <url-repo> β†’ Menambahkan remote repository dengan nama origin.

git push origin <branch> β†’ Mengirim perubahan branch ke remote repository.

git pull origin <branch> β†’ Mengambil perubahan terbaru dari branch di remote repository.

git fetch β†’ Mengambil perubahan terbaru dari remote tanpa menggabungkannya ke branch saat ini.

Mengembalikan Perubahan

git reset <file> β†’ Menghapus file dari staging area tanpa mengubah isinya.

git reset --hard <commit-hash> β†’ Mengembalikan semua perubahan ke commit tertentu dan menghapus perubahan setelahnya.

git revert <commit-hash> β†’ Membuat commit baru yang membatalkan perubahan dari commit tertentu.

git stash β†’ Menyimpan sementara perubahan yang belum di-commit.

git stash pop β†’ Mengembalikan perubahan yang disimpan dalam stash.

Lain-lain

git tag <tag-name> β†’ Menandai commit tertentu dengan tag.

git show <commit-hash> β†’ Menampilkan detail dari commit tertentu.

git blame <file> β†’ Menampilkan siapa yang terakhir mengubah setiap baris dalam file.

Related Posts

Any Question?

Feel free to ask in the comment section below.