Kadang kamu bikin branch dari base yang salah, lalu merge request-nya penuh commit yang tidak ada hubungannya. Solusinya, pindahkan branch ke base yang benar.
Cara paling bersih adalah git rebase --onto.
Kapan dipakai
Pakai kalau:
- feature branch dibuat dari branch yang salah
- target merge berubah
- diff PR/MR menampilkan commit yang tidak terkait
Pola command
git rebase --onto <newBase> <oldBase> <featureBranch>
Artinya:
- ambil commit di
featureBranchyang ada setelaholdBase - putar ulang di atas
newBase
Contoh nyata
Kamu bikin feature/login-ui dari develop, padahal targetnya main:
git checkout feature/login-ui
git rebase --onto main develop feature/login-ui
Setelah ini, history branch-nya berbasis main.
Cek keamanan sebelum rebase
Jalankan dulu:
git status
git log --oneline --decorate --graph -20
Kalau masih ada perubahan yang belum di-commit, stash atau commit dulu.
Branch backup juga disarankan:
git branch backup/feature-login-ui
Menangani conflict
Kalau muncul conflict:
- perbaiki file secara manual
- stage perubahannya:
git add <files> - lanjutkan:
git rebase --continue
Kalau perlu, batalkan:
git rebase --abort
Push setelah rebase
History berubah, jadi force push dengan aman:
git push --force-with-lease origin feature/login-ui
Pakai --force-with-lease, jangan --force biasa.