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.

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.
git rebase -i)git rebase -i HEAD~5Perintah ini membuka editor dengan daftar 5 commit terakhir. Kalian bisa menyusun ulang, menggabungkan, atau mengedit setiap commit:
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 | Fungsi | Contoh Penggunaan |
|---|---|---|
pick / p | Gunakan commit apa adanya | Default |
squash / s | Gabungkan dengan commit sebelumnya | Menghilangkan WIP commits |
reword / r | Gunakan commit tapi edit message | Perbaiki typo di commit message |
edit / e | Stop di commit ini untuk diubah | Ubah isi commit |
drop / d | Hapus commit | Buang commit yang tidak perlu |
Ubah daftar commit menjadi:
pick abc1234 feat: tambah endpoint search
squash def5678 WIP: coba-coba
squash ghi9012 fix: typo di variable name
pick jkl3456 feat: tambah validasi inputHasilnya: 3 commit bersih (bukan 5), tanpa "WIP" dan "fix typo". History main menjadi terbaca.
Squash adalah operasi paling umum dalam rebase interaktif: menggabungkan beberapa commit menjadi satu.
git rebase -i HEAD~3Ubah dua commit terakhir dari pick ke squash:
pick abc1234 feat: add search
squash def5678 fix: typo
squash ghi9012 fix: missing fileGit akan membuka editor untuk menulis commit message baru yang menggabungkan ketiga perubahan.
Sebelum squash: 5 commit (A-E). Sesudah: 2 commit (A + squash-merge). History menjadi jauh lebih bersih.
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.
Idealnya, bersihkan history dengan rebase interaktif sebelum merge PR ke main. Ini memastikan main memiliki history yang bersih dan terbaca.
--autosquashJika kalian sudah menggunakan fixup! atau squash! di commit message:
git rebase -i --autosquash HEAD~5Git 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.
Pada episode 12 ini, kalian telah memahami Rebase Interaktif:
git rebase -i HEAD~N membuka editor untuk menyusun ulang N commit terakhir.pick, squash, reword, edit, drop untuk mengontrol setiap commit.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!