Git adalah alat version control yang sangat kuat, tapi juga sering membingungkan—terutama saat masuk ke konsep rebase. Banyak developer bisa commit dan merge, tapi belum benar-benar paham kapan dan bagaimana menggunakan rebase dengan benar.
Artikel ini membahas Git rebase dari konsep sampai studi kasus nyata.
🧠 Apa itu Git Rebase?
Git rebase adalah proses memindahkan atau “memutar ulang” commit dari satu branch ke branch lain.
Secara sederhana:
Rebase = menulis ulang history commit agar terlihat linear (rapi)
📌 Perbandingan sederhana
Merge:
Menggabungkan dua branch dengan membuat commit baru.
A---B---C (main)
\
D---E (feature)
\
M (merge commit)
Rebase:
Memindahkan commit feature ke atas main.
A---B---C---D'---E' (feature rebased)
👉 Tidak ada merge commit 👉 History jadi linear (rapi)
⚖️ Rebase vs Merge
| Aspek | Merge | Rebase |
|---|---|---|
| History | Non-linear | Linear |
| Commit tambahan | Ada merge commit | Tidak ada |
| Risiko | Rendah | Bisa rewrite history |
| Cocok untuk | Tim besar | Feature branch lokal |
🧪 Studi Kasus 1: Update feature dari main terbaru
Situasi
Kamu sedang kerja di branch:
feature/login
Sementara main sudah update:
main: A --- B --- C --- D
feature: A --- B --- E --- F
❌ Masalah
Kalau kamu langsung merge:
- history jadi bercabang
- banyak merge commit tidak penting
✅ Solusi dengan rebase
git checkout feature/login
git rebase main
Hasil:
A --- B --- C --- D --- E' --- F'
👉 Feature kamu seolah dibuat setelah update terbaru main
💡 Keuntungan
- history bersih
- lebih mudah dibaca reviewer
- tidak ada merge commit tambahan
🧪 Studi Kasus 2: Membersihkan commit sebelum push ke production
Situasi
Kamu punya commit di feature:
fix typo
fix bug login
improve login logic
add login feature
Ini buruk untuk production history.
❌ Masalah
- terlalu banyak commit kecil
- tidak meaningful
- sulit tracking
✅ Solusi: interactive rebase
git rebase -i HEAD~4
Akan muncul:
pick a1 add login feature
pick b2 improve login logic
pick c3 fix bug login
pick d4 fix typo
Ubah menjadi:
pick a1 add login feature
squash b2 improve login logic
squash c3 fix bug login
squash d4 fix typo
🎯 Hasil
add login feature (clean commit)
🧪 Studi Kasus 3: Menyelesaikan conflict saat rebase
Situasi
Dua branch mengubah file yang sama:
main: edit config A
feature: edit config A (versi lain)
Saat rebase
git rebase main
Conflict muncul.
Cara resolve
git status
Edit file:
<<<<<< HEAD
version main
======
version feature
>>>>>> feature
Pilih salah satu:
final version
Lalu:
git add .
git rebase --continue
🧪 Studi Kasus 4: Rewrite history sebelum merge ke main
Situasi real production
Kamu punya branch:
feature/payment
History:
WIP commit
debug payment
fix again
final version
Tujuan
Sebelum merge ke main:
- history harus clean
- hanya 1 commit
Solusi
git rebase -i main
Squash semua commit → 1 commit:
feat: implement payment feature
⚠️ Hal penting saat pakai rebase
❌ Jangan rebase branch yang sudah di-push dan dipakai orang lain
Karena rebase:
- mengubah commit hash
- bisa membuat konflik besar di tim
✅ Aman digunakan di:
- feature branch pribadi
- local branch sebelum push
- cleanup history sebelum PR
🧠 Kapan pakai rebase?
Gunakan rebase jika:
- ingin history rapi
- update feature dari main terbaru
- cleanup commit sebelum PR
Gunakan merge jika:
- branch sudah dipakai banyak orang
- ingin history tetap asli
- workflow tim besar
🚀 Kesimpulan
Git rebase bukan sekadar command, tapi:
Cara untuk membuat history Git lebih bersih, linear, dan mudah dibaca.
🔥 3 hal yang harus kamu ingat:
- Rebase = rewrite history
- Merge = preserve history
- Interactive rebase = alat cleanup commit

Posting Komentar
0Komentar