Git Rebase vs Merge
Terakhir diperbarui
git merge dan git rebase sama-sama menggabungkan pekerjaan dari satu branch ke branch lain. git merge menyatukan kedua riwayat dengan sebuah merge commit, mempertahankan persis apa yang terjadi. git rebase menjalankan ulang commit-mu satu per satu di atas branch lain, menghasilkan riwayat yang bersih dan lurus, tapi sambil menulis ulang commit-mu.
Aturan emasnya: jangan pernah rebase commit yang sudah di-pull orang lain. Coba keduanya di playground terminal: shell sungguhan di browsermu.
Berdampingan
| Perilaku | git merge | git rebase |
|---|---|---|
| Bentuk riwayat | Bercabang, dengan merge commit | Lurus |
| Menulis ulang commit | Tidak | Ya |
| Aman di branch bersama | Ya | Tidak |
| Mempertahankan riwayat persis | Ya | Tidak |
| Mudah melacak kapan sesuatu di-merge | Ya | Lebih sulit |
Sintaks
| Perintah | Fungsinya |
|---|---|
git merge feature | Merge feature ke branch saat ini |
git merge --no-ff feature | Selalu membuat merge commit |
git rebase main | Menjalankan ulang commit branch saat ini di atas main |
git rebase -i HEAD~3 | Mengedit 3 commit terakhir secara interaktif |
git rebase --abort | Membatalkan rebase yang sedang berjalan |
Pertanyaan seputar git rebase vs merge
Apa perbedaan git rebase dan git merge?
git merge menggabungkan dua branch dengan membuat merge commit baru yang menyatukan riwayat keduanya, sehingga catatan persis tentang apa yang terjadi tetap ada. git rebase justru memindahkan commit-mu supaya dijalankan ulang di atas branch lain, menghasilkan riwayat berbentuk garis lurus tapi menulis ulang commit-commit itu dengan hash baru. Merge mempertahankan riwayat; rebase menulis ulang riwayat demi kerapian.Kapan sebaiknya memakai merge dan kapan rebase?
main terbaru agar riwayatnya bersih. Banyak tim melakukan rebase secara lokal, lalu merge ke main.Apa aturan emas rebase?
Jangan pernah rebase commit yang sudah dijadikan dasar pekerjaan orang lain, biasanya apa pun yang sudah kamu push ke branch bersama. Karena rebase menulis ulang commit, melakukannya memaksa semua orang lain menyelaraskan riwayat yang sudah menyimpang. Bebas rebase commit lokal yang belum di-push; pakai merge (atau revert) untuk apa pun yang sudah publik.
Mana yang menimbulkan lebih sedikit konflik, rebase atau merge?
Keduanya tidak menghindari konflik, tapi memunculkannya dengan cara berbeda. Merge menyelesaikan semua konflik sekaligus, di dalam merge commit. Rebase bisa memintamu menyelesaikan konflik commit demi commit saat masing-masing dijalankan ulang. Total pekerjaannya mirip; rebase hanya menyebarnya.
Bisakah saya berlatih ini secara online?
git merge dan git rebase di shell sungguhan di browsermu, tanpa perlu instalasi. Kursus Git interaktif gratis dari Coddy juga membahas merge dan rebase langkah demi langkah.