Di Mac, selesaikan konflik cherry-pick dengan mengedit setiap berkas yang berkonflik di Terminal atau editor kode, melakukan staging berkas yang telah selesai dengan git add, dan menjalankan git cherry-pick --continue. Git dijeda karena tidak dapat menerapkan commit secara bersih; branch Anda saat ini belum menerima commit tersebut. Tinjau kedua sisi dari setiap konflik sebelum melanjutkan, dan gunakan git cherry-pick --abort jika Anda memutuskan untuk tidak melanjutkan. Dokumentasi cherry-pick Git menjelaskan status jeda ini beserta opsi-opsi untuk melanjutkannya.

1. Buka Terminal di folder proyek

Buka Terminal dari Spotlight atau folder Applications > Utilities di Finder. Di Terminal, berpindahlah ke folder repositori menggunakan cd beserta jalurnya. Untuk jalur folder yang mengandung spasi, gunakan tanda kutip pada jalur tersebut, misalnya cd "/Users/sam/Work/My Project". Anda juga dapat mengetik cd dengan spasi di akhir, menyeret folder proyek dari Finder ke jendela Terminal, lalu menekan Return. Apple mendeskripsikan Terminal sebagai antarmuka baris perintah macOS; prompt-nya sering kali diakhiri dengan % jika menggunakan shell bawaan zsh. Panduan Terminal Apple menjelaskan cara membukanya dan mengenali prompt tersebut.

Pastikan Anda berada di repositori dan periksa laporan Git sebelum mengubah berkas:

git status

Jika output menyatakan bahwa cherry-pick sedang berlangsung dan menyebutkan jalur-jalur yang berkonflik, lanjutkan ke langkah di bawah. Jika Anda tidak yakin repositori atau commit mana yang terlibat, berhentilah dan pastikan konteks tersebut sebelum menyelesaikan apa pun. Jangan memulai cherry-pick kedua saat yang pertama sedang dijeda.

2. Periksa konflik dan tentukan isi yang seharusnya dari berkas tersebut

Buka setiap berkas teks yang berkonflik di editor Anda. Git menyisipkan penanda di sekitar bagian-bagian yang tidak dapat direkonsiliasi. Bagian yang umum terlihat seperti ini:

<<<<<<< HEAD
content on the current branch
=======
content from the commit being cherry-picked
>>>>>>> commit subject or identifier

HEAD adalah versi branch saat ini; bagian lainnya berasal dari commit yang sedang diterapkan. Label-label ini mendeskripsikan kedua sisi operasi ini, tetapi tidak memberi tahu Anda versi mana yang benar. Manfaatkan kode di sekitarnya, perubahan yang dimaksud, dan tujuan commit untuk memutuskan apakah akan mempertahankan salah satu sisi atau menggabungkan keduanya. Dokumentasi Git menjelaskan bahwa berkas yang berkonflik berisi penanda dan jalur yang diterapkan secara bersih mungkin sudah diperbarui. Git cherry-pick

Edit berkas tersebut agar berisi hasil yang diinginkan, dengan menghapus semua baris penanda konflik. Periksa setiap konflik di berkas tersebut, simpan, dan ulangi untuk setiap jalur yang tercantum pada git status. Untuk berkas biner atau konflik yang hasil akhirnya tidak jelas, jangan menebak: berkonsultasilah dengan pembuat perubahan atau panduan proyek sebelum memilih versi. Hindari mengganti seluruh berkas dengan salah satu sisi hanya untuk menghilangkan konflik; hal itu dapat membuang perubahan yang sah.

3. Lakukan staging pada resolusi dan tinjau kembali

Setelah menyelesaikan berkas, beri tahu Git bahwa konfliknya telah diselesaikan dengan melakukan staging. Gunakan jalur persis yang ditampilkan oleh git status; gunakan tanda kutip pada jalur yang mengandung spasi:

git add "Sources/Example File.swift"

Ulangi untuk setiap jalur yang telah diselesaikan. git add melakukan staging pada konten berkas saat ini, jadi tinjau apa yang Anda masukkan ke staging jika berkas tersebut memuat editan yang tidak terkait. Manual git-add Git mendokumentasikan bahwa perintah ini menambahkan konten berkas ke indeks, yaitu area staging yang digunakan untuk commit berikutnya. Git add

Periksa apakah masih ada konflik yang tersisa dan tinjau resolusi yang telah di-stage:

git status
git diff --cached

git status seharusnya tidak lagi mencantumkan jalur yang belum terselesaikan. Baca diff yang di-stage dan pastikan perubahan yang diinginkan ada di sana serta penanda konflik atau editan yang tidak disengaja sudah tidak ada. git diff --cached menampilkan perubahan yang di-stage; Git diff mendokumentasikan opsi peninjauan ini. Jika Anda menemukan kesalahan, edit berkas tersebut, lakukan staging lagi, dan tinjau kembali diff-nya.

4. Lanjutkan cherry-pick

Ketika semua konflik telah diselesaikan dan di-stage, jalankan:

git cherry-pick --continue

Git melanjutkan operasi yang dijeda dan, jika berhasil, mencatat perubahan hasil cherry-pick sebagai commit baru. Jika Git membuka editor untuk pesan commit, simpan dan tutup menggunakan kontrol standar editor tersebut. Kemudian periksa git status dan tinjau commit terbaru jika diperlukan:

git status
git log -1 --oneline

Untuk urutan beberapa commit cherry-pick, --continue akan melanjutkan operasinya; commit berikutnya mungkin juga berhenti karena konflik. Selesaikan dan lakukan staging pada konflik commit tersebut dengan cara yang sama. Git mendokumentasikan --continue untuk melanjutkan cherry-pick yang tertahan dan --skip untuk melewati commit saat ini. Gunakan --skip hanya jika Anda memang berniat melewati perubahan commit tersebut, bukan sebagai jalan pintas untuk berkas yang belum diselesaikan. Opsi Git cherry-pick

Jika Anda ingin membatalkannya

Jika Anda memutuskan bahwa cherry-pick tidak boleh dilanjutkan, jalankan git cherry-pick --abort. Git mendokumentasikan ini sebagai pembatalan operasi dan pengembalian ke status sebelum urutan dimulai. Jika Anda memiliki pekerjaan lokal sebelum memulai, periksa setelahnya dengan git status; jangan gunakan perintah reset yang destruktif sebagai pengganti pemahaman status saat ini. Git cherry-pick

Aturan berhenti yang praktis cukup sederhana: lanjutkan hanya setelah Anda memahami konten yang dimaksud dari setiap berkas yang berkonflik dan telah meninjau hasil staging-nya. Jika maksud kodenya tidak jelas, pertahankan status jeda dan mintalah panduan khusus proyek sebelum membuat commit.

Sumber