Apakah ada cara untuk mendasarkan kembali satu komit dari cabang ke cabang lain?
Saya memiliki struktur cabang ini:
-- -- -- -- -- (Master)
\
-- -- -- -- -- XX (Feature-branch)
Yang ingin saya lakukan adalah melakukan rebase pada commit terakhir Feature-branch
ke master dan mengembalikan Feature-branch
satu commit.
-- -- -- -- -- XX (Master)
\
-- -- -- -- -- (Feature-branch)
Bagaimana aku melakukan itu?
Jawaban:
Anda dapat memilih XX untuk dikuasai.
Dan hapus komit terakhir dari cabang fitur dengan git reset.
sumber
cherry-pick
membuatnya tampak seolah-olah telah dihapus dari lokasi lama dan dibuat di lokasi baru. Saya kira rebase akan mengatasinya, tetapi sekarang saya telah mendorong ke atas jadi saya tidak bisa mengujinya. Bagaimanapun, berhati-hatilah jika Anda memiliki situasi serupa.Feature-branch
ke asal, Anda harus melakukannyagit push -f origin Feature-branch
karena AndaFeature-branch
sekarang dianggap 1 komit di belakangorigin/Feature-branch
.Ini mengatakan "rebase rentang komit antara cabang terakhir-sebelum dan cabang (yaitu, komit XX) di ujung cabang master"
Setelah
branch
tip operasi ini dipindahkan saat komitXX
, jadi Anda ingin menyetelnya kembaliYang mengatakan "setel ulang ujung cabang ke komit sebelum keadaan sebelumnya"
Jadi cherry pick adalah solusi yang lebih sederhana ...
sumber
--onto
sebelumnya jadi saya mungkin melakukan sesuatu yang salah. BTW, OP mengatakan rebase tetapi sepertinya dia ingin melakukan pilihan ceri.Sebenarnya cukup mudah untuk dilakukan. Solusinya adalah dengan melakukan rebase interaktif dan "melepaskan" semua komit yang tidak ingin Anda sertakan dalam rebase.
git rebase -i <target_branch>
dimanatarget_branch
cabang yang ingin Anda rebaseKemudian Anda akan mengedit file yang dibuka dan
pick
komit yang Anda inginkan dandrop
(ataud
singkatnya) semua komit yang tidak ingin Anda bawa.sumber
Tanggapan @Charles benar. Bagaimanapun, saya akhirnya menggunakan ini berkali-kali, terutama untuk mendasarkan kembali konfigurasi tertentu pada sebuah proyek
bahwa saya membuat perintah baru untuk itu:
biasanya Anda ingin melengkapi nama cabang secara otomatis untuk perintah itu, jadi tambahkan sumber fungsi ini (menambahkan ke .bashrc atau .profile):
git autocomplete akan mencarinya
Anda dapat menggunakan perintah ini seperti ini:
Jika Anda membagi fitur dengan benar, kemungkinan tidak terbatas.
Saya rasa inilah yang suka dilakukan orang-orang selimut .
perintah ini akan tetap bekerja dengan sha / ref apa pun yang Anda berikan:
sumber
Berikut opsi lain:
Perintah terlihat seperti:
Ini bukan perintah rebase no, tapi itu rebase dalam semangat.
sumber