Buat gudang baharu, letakkan hanya satu fail teks di dalamnya dan buat 6 komit masing-masing Pada masa ini, git log --oneline sepatutnya kelihatan seperti ini
Kandungan fail adalah seperti berikut
Saya mahu membuang komit 442452d tetapi mengekalkan komit e09949e, begini cara saya melakukannya
git reset --hard 260effc
Kemudian git cherry-pick e09949e
Konflik berlaku pada masa ini, seperti yang ditunjukkan di bawah
Apa yang saya tidak faham adalah mengapa ia perlu ditampal secara langsung. Ia tidak sepatutnya kelihatan seperti gambar di atas hanya mengandungi '4' dan bukan '3' diperlukan Jika '3' dialih keluar secara manual, apa gunanya saya memilih ceri? Minta petunjuk kepada Tuhan! ! !
Kenapa tidak git revert 442452d sahaja?
Komit rekod pengubahsuaian relatif dan berkaitan dengan baris atas dan bawah kandungan yang diubah suai Jika baris sebelumnya hilang, konflik akan dilaporkan dan perlu diselesaikan secara manual. Jika kedua-dua komitmen anda tidak lagi dalam fungsi yang berkaitan, anda boleh berbalik terus.
Selain itu, menggunakan kaedah tetapan semula ini --hard dan kemudian cherry-pick tidak begitu baik Rakan usaha sama lain mungkin telah menambahkan komitmen lain di tengah, menjadikan pengendalian konflik berikutnya lebih sukar.
Senario penggunaan yang lebih baik untuk petik ceri ialah apabila anda mahukan ciri yang berasingan daripada cawangan lain pada satu cawangan.
Kerana
e09949e
hanya mengandungi4
, iaitu untuk perbezaan komit sebelumnya442452d
.Tetapi kini anda telah mengalih keluar
442452d
dan berharap untuk menunjuk nod induke09949e
daripada442452d
kepada260effc
memang akan berlaku konflik.Saya tidak pasti jika penjelasan saya jelas tanpa gambar bergerak Jika anda mempunyai sebarang soalan, saya cadangkan anda memainkan tutorial ini terlebih dahulu.