Menu
CoddyTech

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.

merge mencatat commit penggabungan dan menjaga bentuk asli riwayat; rebase menulis ulang commit-mu menjadi satu garis lurus.

Berdampingan

Perilakugit mergegit rebase
Bentuk riwayatBercabang, dengan merge commitLurus
Menulis ulang commitTidakYa
Aman di branch bersamaYaTidak
Mempertahankan riwayat persisYaTidak
Mudah melacak kapan sesuatu di-mergeYaLebih sulit

Sintaks

PerintahFungsinya
git merge featureMerge feature ke branch saat ini
git merge --no-ff featureSelalu membuat merge commit
git rebase mainMenjalankan ulang commit branch saat ini di atas main
git rebase -i HEAD~3Mengedit 3 commit terakhir secara interaktif
git rebase --abortMembatalkan 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?
Pakai merge untuk menggabungkan branch yang sudah selesai (terutama branch bersama), karena aman dan tidak merusak. Pakai rebase untuk merapikan commit lokalmu sendiri sebelum dibagikan, atau untuk memperbarui feature branch ke 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?
Bisa. Buka playground terminal untuk menjalankan 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.
Ilustrasi bahasa pemrograman di Coddy

Belajar Git bersama Coddy

Mulai