Artikel ini meneruskan siri "Advanced Git" kami. Ikuti kami di Twitter atau langgan surat berita kami untuk kemas kini mengenai artikel masa depan!
Dalam ansuran sebelumnya, kami meneroka rebasing dan penggabungan. Walaupun berbeza, kedua -dua git merge
dan git rebase
melayani tujuan asas yang sama: mengintegrasikan perubahan dari satu cawangan ke yang lain.
Artikel ini memberi tumpuan kepada git cherry-pick
, perintah yang kuat yang membolehkan integrasi terpilih individu melakukan dari mana-mana cawangan ke kepala anda sekarang. Ini berbeza dengan git merge
dan git rebase
, yang menggabungkan semua komitmen baru dari cawangan sumber.
Mengapa secara selektif menggunakan satu komit? Kes penggunaan utama adalah membetulkan kesilapan. Bayangkan secara tidak sengaja melakukan cawangan yang salah. cherry-pick
memudahkan pembetulan: beralih ke cawangan yang betul dan ceri-memilih komit yang salah.
Satu perkataan yang berhati-hati: Elakkan terlalu bergantung pada cherry-pick
. Aliran kerja peringkat cawangan, yang difasilitasi oleh git merge
dan git rebase
, umumnya lebih disukai. cherry-pick
adalah alat yang berharga untuk situasi tertentu, bukan pengganti untuk penggabungan standard atau rebasing.
Pertimbangkan senario ini: komit yang dimaksudkan untuk cawangan feature/newsletter
yang tersilap mendarat di master
. Tangkapan skrin menara berikut (GIT GUI untuk macOS dan Windows) menggambarkan ini, menonjolkan komitmen 26bf1b48
yang salah diletakkan di master
:
Sebagai alternatif, baris arahan mendedahkan isu:
$ git log komit 26BF1B4808BA9783E4FABB19EC81E7A4C8160194 (Ketua -> Master) Pengarang: Tobias Günther Tarikh: Jum 5 Okt 09:58:03 2018 0200 Halaman pendaftaran surat berita
Komit 26bf1b48
tergolong dalam feature/newsletter
. Mari gunakan cherry-pick
untuk memindahkannya:
Ciri/Surat Berita Semak $ Git Beralih ke 'Ciri/Surat Berita' Cawangan status $ git Pada ciri cawangan/surat berita Tidak ada yang boleh dilakukan, pokok kerja bersih $ git ceri-pick 26bf1b48 [Ciri/Surat Berita 7FB55D0] Halaman Pendaftaran Buletin Pengarang: Tobias Günther Tarikh: Jum 5 Okt 09:58:03 2018 0200 1 fail berubah, 0 sisipan (), 0 penghapusan (-) Buat mod 100644 pendaftaran.html
git log
kini menunjukkan komitmen dalam feature/newsletter
:
$ git log komit 7fb55d06a8e70fdce46921a8a3d3a9de7f7fb8d7 (kepala -> ciri/surat berita) Pengarang: Tobias Günther Tarikh: Jum 5 Okt 09:58:03 2018 0200 Halaman pendaftaran surat berita
Nota: cherry-pick
mencipta salinan komit, meninggalkan utuh asal.
Komitmen "tidak betul" kekal dalam master
. git reset
membuangnya:
Master checkout $ git Beralih ke Cawangan 'Master' $ git reset -HARD HEAD ~ 1 Ketua kini berada di 776F8CA Tukar mengenai Tajuk dan Padam Halaman Ralat
Menara GUI menggambarkan keseluruhan proses ini.
Mengutamakan merge
atau rebase
apabila mungkin. cherry-pick
untuk situasi di mana mereka tidak sesuai, khususnya untuk bergerak individu. Ingat, git cherry-pick
pendua berkomitmen; Sentiasa bersihkan selepas itu.
Terokai "Kit Git Advanced" percuma untuk menyelam lebih mendalam ke dalam alat Git, termasuk strategi cawangan, rebase interaktif, reflog, dan submodul.
Selamat memilih ceri, dan jumpa anda dalam ansuran "Advanced Git" seterusnya!
Atas ialah kandungan terperinci Memilih ceri dalam git. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!