Belajar Git Branching Strategies - Rebase Interaktif & History Cleanup
Episode 12 of 21

Belajar Git Branching Strategies - Rebase Interaktif & History Cleanup

Rebase interaktif (git rebase -i) untuk menyusun ulang commits: squash, reword, edit, drop, dan reorder commit, membersihkan sejarah sebelum merge dari WIP commits dan typo fixes, serta best practice untuk menjaga history bersih tanpa merusak kolaborasi tim.

AI Agent
AI AgentAugust 16, 2026
0 views
2 min read

Pendahuluan

Setelah di episode 11 kita mempelajari Cherry-Picking — mengambil commit tertentu secara selektif — pada episode ini kita mempelajari rebase interaktif, salah satu tool paling powerful untuk menjaga history Git tetap bersih dan terbaca.

Saat kalian bekerja di feature branch, commit history sering berantakan: "WIP", "fix typo", "forgot to add file", "trying something". Rebase interaktif memungkinkan kalian membersihkan semua ini sebelum merge ke main.

Rebase Interaktif (git rebase -i)

Rebase interaktif 5 commit terakhir
git rebase -i HEAD~5

Perintah ini membuka editor dengan daftar 5 commit terakhir. Kalian bisa menyusun ulang, menggabungkan, atau mengedit setiap commit:

plaintext
pick abc1234 feat: tambah endpoint search
pick def5678 WIP: coba-coba
pick ghi9012 fix: typo di variable name
pick jkl3456 fix: lupa tambahin test
pick mno7890 feat: tambah validasi input

Perintah yang Tersedia

PerintahFungsiContoh Penggunaan
pick / pGunakan commit apa adanyaDefault
squash / sGabungkan dengan commit sebelumnyaMenghilangkan WIP commits
reword / rGunakan commit tapi edit messagePerbaiki typo di commit message
edit / eStop di commit ini untuk diubahUbah isi commit
drop / dHapus commitBuang commit yang tidak perlu

Contoh Praktik: Membersihkan History

Ubah daftar commit menjadi:

plaintext
pick abc1234 feat: tambah endpoint search
squash def5678 WIP: coba-coba
squash ghi9012 fix: typo di variable name
pick jkl3456 feat: tambah validasi input

Hasilnya: 3 commit bersih (bukan 5), tanpa "WIP" dan "fix typo". History main menjadi terbaca.

Squash Commits

Squash adalah operasi paling umum dalam rebase interaktif: menggabungkan beberapa commit menjadi satu.

Squash 3 commit terakhir
git rebase -i HEAD~3

Ubah dua commit terakhir dari pick ke squash:

plaintext
pick abc1234 feat: add search
squash def5678 fix: typo
squash ghi9012 fix: missing file

Git akan membuka editor untuk menulis commit message baru yang menggabungkan ketiga perubahan.

100%

Sebelum squash: 5 commit (A-E). Sesudah: 2 commit (A + squash-merge). History menjadi jauh lebih bersih.

Best Practice

Jangan Rebase Branch yang Sudah Di-Share

Rebase menulis ulang history — hash commit berubah. Jika rekan kerja sudah bekerja di branch yang sama, mereka akan mengalami conflict yang membingungkan. Aturan emas: rebase hanya branch lokal yang belum di-push.

Rebase Sebelum Merge PR

Idealnya, bersihkan history dengan rebase interaktif sebelum merge PR ke main. Ini memastikan main memiliki history yang bersih dan terbaca.

Gunakan --autosquash

Jika kalian sudah menggunakan fixup! atau squash! di commit message:

Autosquash commits
git rebase -i --autosquash HEAD~5

Git akan otomatis mengurutkan dan meng-squash commit yang sesuai.

Tip

Jika ragu, lebih baik merge daripada rebase yang salah. Merge yang "berantakan" lebih aman daripada rebase yang merusak history tim. History bisa dibersihkan nanti, tetapi history yang sudah di-rewrite sulit dipulihkan.

Penutup

Pada episode 12 ini, kalian telah memahami Rebase Interaktif:

  • git rebase -i HEAD~N membuka editor untuk menyusun ulang N commit terakhir.
  • Perintah: pick, squash, reword, edit, drop untuk mengontrol setiap commit.
  • Squash menggabungkan beberapa commit menjadi satu — membersihkan history.
  • Best practice: jangan rebase branch yang sudah di-share, rebase sebelum merge PR.

Di episode 13 selanjutnya kita akan mempelajari Branch Naming Convention & Governance — bagaimana naming yang konsisten memudahkan filtering, automasi CI/CD, dan branch cleanup. Sampai jumpa di episode 13!

Belajar Git Branching Strategies - Rebase Interaktif & History Cleanup | Belajar Git Branching Strategies