Git Cherry-pick
Terakhir diperbarui
git cherry-pick menyalin perubahan dari satu atau beberapa commit tertentu dan menerapkannya ke branch saat ini sebagai commit baru. Dengan cara ini kamu bisa mengambil satu perbaikan dari branch lain tanpa harus merge seluruh branch itu. Berguna untuk backport hotfix atau mengambil satu commit dari feature branch.
Coba perintah-perintah ini di playground terminal: shell sungguhan di browsermu, tanpa perlu instalasi.
Sintaks
| Perintah | Fungsinya |
|---|---|
git cherry-pick <hash> | Menerapkan satu commit ke branch saat ini |
git cherry-pick <a> <b> | Menerapkan beberapa commit secara berurutan |
git cherry-pick <a>..<b> | Menerapkan rentang commit (tanpa a) |
git cherry-pick -n <hash> | Menerapkan perubahan tapi belum membuat commit |
git cherry-pick -x <hash> | Mencatat commit aslinya di pesan commit |
Selama cherry-pick berjalan
Kalau cherry-pick menemui konflik, selesaikan lalu lanjutkan.
| Perintah | Fungsinya |
|---|---|
git cherry-pick --continue | Melanjutkan setelah konflik selesai |
git cherry-pick --abort | Membatalkan dan mengembalikan branch |
git cherry-pick --skip | Melewati commit saat ini |
Contoh langkah demi langkah
| Langkah | Perintah | Hasil |
|---|---|---|
| 1 | git log --oneline hotfix | Cari hash perbaikannya, misalnya a1b2c3d |
| 2 | git switch main | Pindah ke branch yang akan menerima perbaikan |
| 3 | git cherry-pick a1b2c3d | Menerapkan perbaikan ke main sebagai commit baru dengan hash baru |
Pertanyaan seputar git cherry-pick
Apa fungsi git cherry-pick?
Perintah ini mengambil perubahan dari commit tertentu dan menerapkannya ke branch saat ini sebagai commit yang benar-benar baru (dengan hash baru). Berbeda dengan merge atau rebase, cherry-pick tidak membawa seluruh branch, hanya commit yang kamu sebutkan.
Kapan sebaiknya memakai cherry-pick?
main ke release branch, atau mengambil satu commit yang berguna dari feature branch tanpa merge semuanya. Kalau kamu ingin seluruh branch, pakai merge atau rebase.Bagaimana cara cherry-pick beberapa commit?
git cherry-pick <a> <b> <c> menerapkan masing-masing secara berurutan. Untuk rentang yang berurutan, pakai git cherry-pick <start>..<end>, yang menerapkan setiap commit setelah start sampai dan termasuk end. Pakai <start>^..<end> kalau kamu ingin start ikut disertakan.Bagaimana kalau cherry-pick menimbulkan konflik?
git add pada hasilnya, lalu jalankan git cherry-pick --continue. Untuk mundur sepenuhnya, pakai git cherry-pick --abort, yang mengembalikan branch-mu ke keadaan sebelum cherry-pick dimulai.Bagaimana cara cherry-pick commit dari branch lain?
git log --oneline <other-branch>, pindah ke branch yang akan menerimanya, lalu jalankan git cherry-pick <hash>. Kamu juga bisa memberikan nama branch, seperti git cherry-pick feature, yang mengambil commit di ujung branch tersebut.Apa bedanya cherry-pick dan merge?
Bisakah saya berlatih ini secara online?
git cherry-pick di shell sungguhan di browsermu, tanpa perlu instalasi. Kursus Git interaktif gratis dari Coddy juga membahas cara memindahkan commit antar-branch langkah demi langkah.