Rebase & Cherry-pick

Merapikan riwayat menjadi satu garis dengan rebase, dan mengambil commit tertentu dengan cherry-pick.

Part 19 dari 22 ± 40 menit Gratis

Rebase: memindahkan dasar branch

Misalkan main maju sementara kamu mengerjakan fitur-footer:

        c3 <- c4          (fitur-footer)
       /
c1 <- c2 <- c5            (main)

Merge akan membuat commit penggabungan. Rebase melakukan hal lain: ia "mencabut" commit c3 dan c4, lalu memutar ulang keduanya di atas c5. Hasilnya riwayat lurus:

c1 <- c2 <- c5 <- c3' <- c4'     (fitur-footer)
              (main)

c3' dan c4' adalah commit baru (hash berbeda) dengan perubahan yang sama. Perintahnya dijalankan dari branch yang ingin dipindahkan:

git switch fitur-footer
git rebase main
git switch main
git merge fitur-footer       # sekarang fast-forward, riwayat linear

Merge vs rebase

MergeRebase
RiwayatMempertahankan apa adanya (bercabang)Linear, rapi
Hash commitTidak berubahCommit ditulis ulang (hash baru)
RisikoAmanBerbahaya bila dilakukan pada commit yang sudah dibagikan

Golden rule of rebase

Jangan pernah rebase commit yang sudah di-push dan dipakai orang lain. Rebase mengubah hash; rekanmu yang memegang commit lama akan mengalami riwayat yang tidak cocok. Aman untuk: branch pribadi yang belum dibagikan, atau membersihkan sebelum membuka PR.

Konflik saat rebase

Commit diputar ulang satu per satu, jadi konflik bisa muncul di tiap commit. Selesaikan seperti biasa lalu:

git add berkas-yang-konflik
git rebase --continue
# atau batalkan semuanya:
git rebase --abort

git pull --rebase

Alih-alih membuat commit merge setiap kali menarik perubahan, git pull --rebase menaruh commit lokalmu di atas commit remote terbaru. Banyak tim memakainya sebagai default: git config --global pull.rebase true.

Cherry-pick: ambil satu commit saja

Kadang kamu hanya butuh satu commit dari branch lain (mis. perbaikan bug), bukan seluruh branch:

git switch main
git cherry-pick eksperimen~1        # salin commit itu ke main (hash baru)
git cherry-pick a1b2c3d e4f5g6h     # beberapa commit

Cherry-pick membuat salinan commit di branch saat ini. Bila konflik: selesaikan, git add, lalu git cherry-pick --continue (atau --abort). Pakai seperlunya: terlalu sering menyalin commit membuat riwayat membingungkan.

Rebase interaktif (info)

git rebase -i HEAD~4 membuka daftar commit yang bisa kamu reword, squash, drop, reorder. Ini alat ampuh untuk merapikan sebelum PR. (Tersedia di Git asli; simulator ini mendukung rebase biasa.)

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X