Pertanyaan Apa cherry-picking a commit dengan git mean?


Baru-baru ini, saya diminta untuk memilih komitmen. Tapi saya tidak tahu apa artinya. Jadi, apa? cherry picking komit dalam git berarti? Bagaimana Anda melakukannya?


1356
2018-02-18 07:20


asal


Jawaban:


Cherry picking in git berarti memilih komit dari satu cabang dan menerapkannya ke yang lain.

Ini berbeda dengan cara lain seperti merge dan rebase yang biasanya menerapkan banyak commit ke cabang lain.

  1. Pastikan Anda berada di cabang yang ingin Anda terapkan komitmennya.

    git checkout master
    
  2. Jalankan yang berikut:

    git cherry-pick <commit-hash>
    

N.B .:

  1. Jika Anda memilih ceri dari cabang publik, Anda harus mempertimbangkan untuk menggunakannya

    git cherry-pick -x <commit-hash>
    

    Ini akan menghasilkan pesan komit standar. Dengan cara ini, Anda (dan rekan kerja Anda) masih bisa melacak asal komit dan mungkin menghindari penggabungan konflik di masa depan.

  2. Jika Anda memiliki catatan yang melekat pada commit, mereka tidak mengikuti cherry-pick. Untuk membawa mereka juga, Anda harus menggunakan:

    git notes copy <from> <to>
    

Tautan tambahan:


1621
2018-02-18 07:29



Kutipan ini diambil dari; Kontrol Versi dengan Git (Buku yang benar-benar hebat, saya mendorong Anda untuk membelinya jika Anda tertarik dengan git)

Edit: Karena jawaban ini masih mendapat kesan, saya ingin menambahkan tutorial video aksi yang sangat bagus tentangnya:

Youtube: Pengantar Git cherry-pick

Menggunakan git cherry-pick Perintah git cherry-pick commit menerapkan   perubahan yang diperkenalkan oleh commit bernama pada cabang saat ini. Itu akan   memperkenalkan komitmen baru yang berbeda. Sebenarnya, menggunakan git   cherry-pick tidak mengubah sejarah yang ada dalam repositori;   sebaliknya, itu menambah sejarah. Seperti halnya operasi Git lainnya itu   memperkenalkan perubahan melalui proses penerapan diff, Anda mungkin perlu   menyelesaikan konflik untuk sepenuhnya menerapkan perubahan dari komitmen yang diberikan .   Perintah git cherry-pick biasanya digunakan untuk memperkenalkan tertentu   melakukan dari satu cabang dalam repositori ke cabang yang berbeda. SEBUAH   penggunaan umum adalah untuk meneruskan-atau kembali-port commit dari pemeliharaan   cabang ke cabang pengembangan.

$ git checkout rel_2.3
$ git cherry-pick dev~2 # commit F, above

sebelum: before

setelah: after


180
2018-05-13 15:06



Cherry picking in Git dirancang untuk menerapkan beberapa commit dari satu cabang ke cabang lain. Ini bisa dilakukan jika Anda misalnya. membuat kesalahan dan melakukan perubahan ke cabang yang salah, tetapi tidak ingin menggabungkan seluruh cabang. Anda hanya bisa misalnya. kembalikan commit dan ceri-pilih di cabang lain.

Untuk menggunakannya, Anda hanya perlu git cherry-pick hash, dimana hash adalah hash komit dari cabang lain.

Untuk prosedur lengkap, lihat: http://technosophos.com/2009/12/04/git-cherry-picking-move-small-code-patches-across-branches.html


124
2018-02-18 07:29



cherry-pick adalah fitur Git. Jika seseorang ingin melakukan commit tertentu di satu cabang ke cabang target, maka cherry-pick digunakan.
        git cherry-pick langkah-langkahnya adalah seperti di bawah ini.

  1. checkout (beralih ke) cabang target.
  2. git cherry-pick <commit id>
    

    ID komit di sini adalah id aktivitas dari cabang lain.Eg.

    git cherry-pick 9772dd546a3609b06f84b680340fb84c5463264f
    
  3. dorong ke cabang target

Mengunjungi https://git-scm.com/docs/git-cherry-pick


24
2017-08-24 09:39



Anda dapat berpikir jika memilih cherry mirip dengan rebase, atau lebih tepatnya itu dikelola seperti rebase. Dengan ini, saya berarti bahwa dibutuhkan komitmen yang sudah ada dan meregenerasi mengambil, sebagai titik awal, kepala cabang Anda saat ini.

SEBUAH rebase mengambil komit yang memiliki orangtua X dan meregenerasi komit seolah-olah itu benar-benar memiliki orangtua Y, dan ini persis apa cherry-pick tidak.

Cherry pick lebih tentang bagaimana Anda memilih commit. Dengan pull (rebase), git secara implisit melahirkan kembali komitmen lokal Anda di atas apa yang ditarik ke cabang Anda, tetapi dengan cherry-pick Anda secara eksplisit memilih beberapa commit (s), dan secara implisit meregenerasikannya (mereka) di atas cabang Anda saat ini.

Jadi cara Anda melakukannya berbeda, tetapi di bawah kap mereka adalah operasi yang sangat mirip - regenerasi komitmen.


7
2018-01-31 22:19



Ini seperti Salin (dari suatu tempat) dan Tempel (ke suatu tempat), tetapi untuk komitmen tertentu.

Jika Anda ingin melakukan perbaikan panas, misalnya, maka Anda dapat menggunakan cherry-pick fitur.

Lakukan tugasmu cherry-pick dalam cabang pengembangan, dan merge yang berkomitmen untuk cabang rilis. Demikian juga, lakukan a cherry-pick dari cabang rilis untuk dikuasai. Voila


2
2017-10-07 11:55