tutorial, git,

Git Rebase: Panduan Lengkap dan Kapan Menggunakannya

Kiki/🎮🍉⌨️🍩💻 Kiki/🎮🍉⌨️🍩💻 Sep 15, 2026 · 5 mins read
Git Rebase: Panduan Lengkap dan Kapan Menggunakannya
Share this

Git rebase adalah salah satu perintah yang paling sering disalahpahami sekaligus paling powerful di Git. Rebase menawarkan cara alternatif untuk mengintegrasikan perubahan dari satu branch ke branch lain, menghasilkan histori yang lebih linear dan bersih dibanding merge. Tapi rebase juga punya aturan yang wajib dipatuhi agar tidak menyebabkan masalah di tim.


Apa itu Rebase?

Secara sederhana, rebase memindahkan atau “memutar ulang” commit dari satu branch ke atas branch lain.

Merge vs Rebase

Kondisi Awal:
main:    A ── B ── E ── F
               \
feature:        C ── D

Setelah git merge main (di branch feature):
main:    A ── B ── E ── F
               \         \
feature:        C ── D ── M  (merge commit)

Setelah git rebase main (di branch feature):
main:    A ── B ── E ── F
                         \
feature:                  C' ── D'  (commit baru, hash berubah!)

Dengan rebase, commit C dan D “dipindahkan” ke atas F (ujung main). Hasilnya adalah histori yang linear — seolah-olah feature branch dimulai dari ujung main, bukan dari titik percabangan awal.

Perhatikan tanda ' (prime) — hash commit berubah karena commit dibuat ulang di posisi baru.


Cara Menggunakan Rebase

# Di branch feature, rebase ke atas main
git switch feature/login
git rebase main

# Alternatif (dari luar branch feature)
git rebase main feature/login

Setelah Rebase Berhasil

# Merge ke main sudah bisa fast-forward (histori linear)
git switch main
git merge feature/login  # Fast-forward
git branch -d feature/login

Rebase Conflict

Rebase bisa mengalami conflict, mirip merge conflict. Perbedaannya: conflict bisa terjadi di setiap commit yang di-rebase, bukan hanya di akhir.

git rebase main
# CONFLICT (content): Merge conflict in src/auth.js
# error: could not apply a1b2c3d... feat: tambah login

Menyelesaikan Rebase Conflict

# 1. Edit file yang konflik
nano src/auth.js

# 2. Stage file yang sudah diselesaikan
git add src/auth.js

# 3. Lanjutkan rebase (jangan git commit!)
git rebase --continue

# Jika ada commit lain yang konflik, ulangi langkah 1-3

# Membatalkan rebase dan kembali ke kondisi semula
git rebase --abort

Interactive Rebase — Mengedit Histori Lokal

git rebase -i (interactive) adalah fitur paling powerful dari rebase. Ini memungkinkan kamu mengedit, menggabungkan, menghapus, dan mengubah urutan commit sebelum di-push.

# Rebase interaktif 3 commit terakhir
git rebase -i HEAD~3

Git akan membuka editor dengan daftar commit:

pick a1b2c3d feat: tambah halaman login
pick b2c3d4e fix: perbaiki typo di login
pick c3d4e5f wip: sedang kerjakan logout

# Commands:
# p, pick   = gunakan commit ini apa adanya
# r, reword = gunakan commit, tapi ubah pesannya
# e, edit   = gunakan commit, tapi berhenti untuk amend
# s, squash = gabungkan dengan commit sebelumnya
# f, fixup  = gabungkan, buang pesan commit ini
# d, drop   = hapus commit ini

Contoh: Squash — Gabungkan Beberapa Commit

Ubah pick menjadi squash (atau s) untuk commit yang ingin digabungkan ke commit sebelumnya:

pick a1b2c3d feat: tambah halaman login
squash b2c3d4e fix: perbaiki typo di login
squash c3d4e5f wip: sedang kerjakan logout

Git akan membuka editor lagi untuk menulis pesan commit gabungan:

feat: tambah halaman login

- tambah form login dengan validasi
- perbaiki typo di label
- tambah fungsi logout

Contoh: Reword — Ubah Pesan Commit

pick a1b2c3d feat: tambah halaman login
reword b2c3d4e fix typo  ← akan diminta tulis ulang pesan ini
pick c3d4e5f feat: tambah logout

Contoh: Drop — Hapus Commit

pick a1b2c3d feat: tambah halaman login
drop b2c3d4e commit debug yang tidak perlu
pick c3d4e5f feat: tambah logout

Aturan Emas Rebase

Jangan rebase commit yang sudah di-push ke remote repository yang di-share dengan orang lain.

Mengapa? Karena rebase mengubah hash commit (membuat commit baru). Jika orang lain sudah mempunyai commit lama di lokal mereka, histori mereka akan bertentangan dengan histori yang baru.

Kapan Rebase Aman?

✅ Rebase branch lokal yang belum di-push sama sekali

✅ Rebase branch pribadi yang hanya kamu yang pakai (force push ke origin diperbolehkan)

✅ Interactive rebase untuk merapikan commit sebelum membuat Pull Request

Kapan Harus Pakai Merge?

✅ Ketika branch sudah di-push dan di-share dengan tim

✅ Untuk mengintegrasikan branch ke main (buat merge commit yang jelas)

✅ Ketika kamu ingin mempertahankan konteks “kapan branch ini dibuat”


git pull --rebase

# Daripada merge saat pull (default)
git pull

# Gunakan rebase saat pull untuk histori lebih bersih
git pull --rebase

# Set sebagai default
git config --global pull.rebase true

Dengan --rebase, commit lokal kamu yang belum di-push akan diletakkan di atas commit terbaru dari remote — menghasilkan histori yang lebih linear.


Merge vs Rebase: Mana yang Harus Dipilih?

Pertimbangan Merge Rebase
Histori Non-linear, ada merge commit Linear, bersih
Keamanan Aman selalu Berbahaya jika salah
Cocok untuk Branch yang di-share Branch lokal/pribadi
Keterbacaan log Bisa ramai Mudah dibaca
Konteks Jelas kapan branch dibuat Seolah-olah linear

Banyak tim menggunakan pendekatan gabungan: rebase untuk merapikan branch lokal, merge (dengan --no-ff) untuk mengintegrasikan ke main.


Kesimpulan

Rebase adalah alat yang powerful untuk menghasilkan histori Git yang bersih dan mudah dibaca. Kuncinya adalah memahami kapan aman digunakan dan kapan harus dihindari. Dengan git rebase -i, kamu bisa merapikan puluhan commit berantakan menjadi histori yang rapi sebelum berbagi ke tim.

Di artikel berikutnya, kita bahas git stash — cara menyimpan pekerjaan yang sedang berjalan sementara untuk berpindah branch.

Kiki/🎮🍉⌨️🍩💻
Written by Kiki/🎮🍉⌨️🍩💻
hello I'm friend K.