Git Rebase vs Merge: 5 Perbedaan dan Kapan Memakainya

Git rebase vs merge adalah perdebatan yang hampir selalu muncul di tim developer. Kamu baru selesai mengerjakan fitur di branch sendiri, lalu saatnya menggabungkannya ke main. Git menyediakan dua cara: merge dan rebase. Keduanya sama-sama menggabungkan perubahan, tetapi hasil riwayat commit-nya sangat berbeda.

Pilihan yang salah bisa membuat riwayat repository berantakan, atau lebih buruk lagi, membuat pekerjaan rekan satu tim hilang. Di artikel ini kamu akan memahami cara kerja keduanya, 5 perbedaan utamanya, contoh perintah, dan kapan masing-masing sebaiknya dipakai.

Daftar Isi

  1. Apa Itu Git Merge?
  2. Apa Itu Git Rebase?
  3. 5 Perbedaan Git Rebase vs Merge
  4. Contoh Perintah Merge dan Rebase
  5. Kapan Memakai Merge dan Kapan Memakai Rebase?
  6. Aturan Emas Git Rebase
  7. Kesimpulan

Apa Itu Git Merge?

Git merge menggabungkan dua branch dengan membuat satu merge commit baru yang menyatukan kedua riwayat. Semua commit lama tetap utuh pada tempatnya, sehingga riwayat asli terjaga persis seperti kejadiannya.

Bayangkan branch fitur-login dibuat dari main, lalu main terus bertambah commit selama kamu bekerja. Saat di-merge, Git menambahkan satu commit penghubung. Riwayatnya terlihat bercabang lalu menyatu kembali.

Kelebihan merge adalah aman dan tidak mengubah commit yang sudah ada. Kekurangannya, riwayat bisa terlihat ramai jika banyak merge commit.

Apa Itu Git Rebase?

Git rebase memindahkan commit-commit dari branch kamu supaya seolah-olah dibuat di atas ujung branch tujuan yang terbaru. Git mengambil commit kamu, lalu memutarnya ulang (replay) satu per satu di atas main.

Hasilnya riwayat yang lurus dan rapi tanpa percabangan. Namun ada konsekuensi penting: commit yang diputar ulang sebenarnya adalah commit baru dengan hash baru. Karena itu rebase disebut “menulis ulang sejarah”.

Dokumentasi resminya bisa kamu baca di halaman git rebase pada situs Git.

5 Perbedaan Git Rebase vs Merge

1. Bentuk Riwayat Commit

Merge menghasilkan riwayat bercabang yang mencerminkan kerja paralel. Rebase menghasilkan riwayat lurus (linear) yang lebih mudah dibaca dengan git log.

2. Adanya Merge Commit

Merge biasanya membuat merge commit baru (kecuali kondisinya memungkinkan fast-forward). Rebase tidak membuat merge commit sama sekali.

3. Hash Commit Berubah atau Tidak

Pada merge, commit lama tidak berubah. Pada rebase, setiap commit yang dipindahkan mendapat hash baru. Inilah sumber utama masalah jika branch tersebut sudah dibagikan ke orang lain.

4. Cara Menangani Konflik

Saat merge, semua konflik diselesaikan sekaligus dalam satu langkah. Saat rebase, konflik bisa muncul per commit, sehingga kamu mungkin menyelesaikannya berkali-kali jika branch punya banyak commit. Sebagai gantinya, tiap penyelesaian lebih kecil dan terfokus.

5. Tingkat Risiko pada Branch Bersama

Merge relatif aman dipakai di branch yang dikerjakan banyak orang. Rebase berisiko jika dilakukan pada branch yang sudah di-push dan dipakai rekan lain, karena riwayat yang ditulis ulang bisa bentrok dengan salinan mereka.

Ringkasan Perbandingan

AspekGit MergeGit Rebase
Bentuk riwayatBercabangLurus
Merge commitAdaTidak ada
Hash commit lamaTetapBerubah
KonflikSekali selesaiBisa per commit
Aman untuk branch bersamaYaTidak disarankan

Contoh Perintah Merge dan Rebase

Menggabungkan dengan Merge

bash

git checkout main
git pull origin main
git merge fitur-login

Git akan menggabungkan fitur-login ke main. Jika ada konflik, perbaiki file yang bermasalah, lalu jalankan git add . dan git commit.

Menggabungkan dengan Rebase

bash

git checkout fitur-login
git rebase main

Perintah ini memindahkan commit fitur-login ke atas main terbaru. Jika muncul konflik, selesaikan lalu lanjutkan:

bash

git add .
git rebase --continue

Kalau merasa salah langkah, batalkan seluruh proses dengan:

bash

git rebase --abort

Setelah rebase selesai, kamu bisa menggabungkannya ke main dengan merge fast-forward sehingga riwayat tetap lurus:

bash

git checkout main
git merge fitur-login

Jika Branch Sudah Pernah Di-push

Karena hash commit berubah, push biasa akan ditolak. Gunakan opsi berikut dengan hati-hati, dan hanya pada branch milikmu sendiri:

bash

git push --force-with-lease

Opsi --force-with-lease lebih aman daripada --force karena menolak push jika ada commit orang lain yang belum kamu ambil.

Kapan Memakai Merge dan Kapan Memakai Rebase?

Tidak ada jawaban tunggal dalam perdebatan git rebase vs merge. Pilihannya bergantung pada situasi dan aturan tim.

Pakai merge ketika:

  • Branch dipakai banyak orang, misalnya main atau develop
  • Kamu ingin mempertahankan riwayat asli tanpa modifikasi
  • Kamu masih pemula dan ingin opsi paling aman

Pakai rebase ketika:

  • Kamu ingin memperbarui branch fitur milik sendiri dengan perubahan terbaru dari main
  • Kamu ingin riwayat yang bersih dan lurus
  • Kamu ingin merapikan commit lokal sebelum membuat pull request, misalnya dengan git rebase -i HEAD~3

Banyak tim memakai kombinasi keduanya: rebase untuk memperbarui branch fitur secara lokal, lalu merge (atau squash merge) saat menggabungkan ke main. Jika kamu sedang menelusuri bug di riwayat yang rapi, teknik git bisect untuk menemukan commit penyebab bug akan jauh lebih mudah dijalankan.

Aturan Emas Git Rebase

Ada satu aturan yang wajib diingat: jangan rebase branch yang sudah dibagikan dan dipakai orang lain. Rebase menulis ulang commit, sehingga rekan yang sudah menarik branch tersebut akan mengalami riwayat yang tidak sinkron dan konflik yang membingungkan.

Rebase aman dipakai pada branch lokal atau branch fitur yang hanya kamu yang mengerjakan. Selebihnya, gunakan merge.

Untuk tips lain yang sering menyelamatkan proyek tim, kamu juga bisa membaca perbandingan REST API vs GraphQL yang membantu menentukan arsitektur sebelum mulai berkolaborasi di repository yang sama.

Kesimpulan

Dalam pembahasan git rebase vs merge, merge unggul dari sisi keamanan dan keaslian riwayat, sedangkan rebase unggul dari sisi kerapian riwayat. Gunakan merge untuk branch bersama, gunakan rebase untuk membersihkan dan memperbarui branch fitur milikmu sendiri, dan patuhi aturan emasnya agar tidak merusak kerja rekan tim.

Mulailah berlatih di repository percobaan agar kamu terbiasa dengan konflik dan perintah --abort. Dengan latihan, memilih antara rebase dan merge akan terasa natural. Punya pengalaman atau pertanyaan soal git? Tulis di kolom komentar.

Leave a Reply

Your email address will not be published. Required fields are marked *