Memanfaatkan Cherry Pick dalam Software Development

Jeremy Christianto
3 min readJun 2, 2023

--

Sumber : https://res.cloudinary.com/practicaldev/image/fetch/s--jmZDSObz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/dmb185yxo5umin72abyr.jpg

Dalam pengembangan software, sering kali kita menghadapi situasi di mana kita perlu memilih dan menerapkan perubahan kode tertentu dari satu cabang ke cabang lainnya. Di sinilah konsep “cherry pick” menjadi relevan. Cherry pick adalah teknik yang memungkinkan kita untuk memilih perubahan kode tertentu dan menerapkannya ke cabang lain tanpa harus menggabungkan seluruh perubahan dari satu cabang ke cabang lain.

Apa itu Cherry Pick?

Cherry pick adalah proses memilih commit tertentu dari satu cabang (branch) dan menerapkannya ke cabang lain tanpa harus menggabungkan seluruh sejarah perubahan dari satu cabang ke cabang lain. Dengan cherry pick, kita dapat memilih perubahan kode yang spesifik dan menerapkannya ke cabang yang diinginkan tanpa memengaruhi perubahan kode lainnya. Hal ini sangat berguna ketika kita hanya ingin mengambil sebagian perubahan tertentu yang relevan dengan masalah yang sedang kita hadapi atau fitur yang ingin kita terapkan.

Bagaimana Cara Menggunakan Cherry Pick?

Berikut adalah langkah-langkah untuk menggunakan cherry pick dalam pengembangan software, antara lain:

  1. Identifikasi commit yang akan di-cherry pick
    Pertama, kita perlu mengidentifikasi commit yang ingin kita pilih dan terapkan ke cabang lain. Untuk melakukan ini, kita dapat menggunakan perintah git log untuk melihat sejarah commit pada cabang yang diinginkan.
  2. Buat cabang target
    Jika kita belum memiliki cabang target di mana perubahan akan diterapkan, kita perlu membuat cabang baru dari cabang tujuan yang diinginkan. Ini dapat dilakukan dengan perintah git branch <nama-cabang>.
  3. Beralih ke cabang target
    Gunakan perintah git checkout <nama-cabang-target> untuk beralih ke cabang target di mana kita ingin menerapkan perubahan.
  4. Terapkan cherry pick
    Gunakan perintah git cherry-pick <id-commit> untuk menerapkan perubahan kode dari commit yang dipilih ke cabang target. ID commit dapat ditemukan dalam log commit yang telah kita identifikasi sebelumnya.
  5. Resolve konflik jika diperlukan
    Terkadang, saat menerapkan cherry pick, kita mungkin menghadapi konflik dengan perubahan kode yang ada di cabang target. Dalam hal ini, kita perlu memecahkan konflik dengan memodifikasi kode secara manual.
  6. Verifikasi dan tes
    Setelah cherry pick berhasil diterapkan, penting untuk memverifikasi dan menguji perubahan yang telah kita terapkan di cabang target. Pastikan bahwa perubahan tidak memengaruhi fungsionalitas yang ada atau menimbulkan bug baru.

Manfaat Cherry Pick

  1. Pemilihan perubahan yang spesifik
    Cherry pick memungkinkan kita untuk memilih dan menerapkan perubahan kode yang spesifik dari satu cabang ke cabang lain. Hal ini sangat berguna ketika kita hanya perlu menerapkan perubahan tertentu tanpa harus menggabungkan seluruh sejarah perubahan.
  2. Pengelolaan perubahan yang efisien
    Dengan cherry pick, kita dapat mengelola perubahan kode dengan lebih efisien. Kita dapat memilih dan menerapkan perubahan yang relevan tanpa harus menggabungkan semua perubahan dari cabang lain, yang dapat mengurangi risiko konflik atau masalah lainnya.
  3. Menangani hotfixes
    Cherry pick juga berguna dalam menangani hotfixes yang perlu diterapkan segera ke cabang produksi. Kita dapat memilih dan menerapkan perubahan yang dibutuhkan tanpa harus menggabungkan perubahan lain yang mungkin sedang dikembangkan di cabang tersebut.

Kesimpulan

Cherry pick adalah teknik yang berguna dalam pengembangan software yang memungkinkan kita untuk memilih dan menerapkan perubahan kode tertentu dari satu cabang ke cabang lain tanpa harus menggabungkan seluruh sejarah perubahan. Dengan cherry pick, kita dapat mengelola perubahan dengan lebih efisien, menangani hotfixes, dan memilih perubahan yang relevan dengan masalah yang sedang dihadapi.

Referensi

--

--