Sebagai contoh, terdapat 100 rekod komit pada cawangan induk jauh
Sekarang saya ingin menggabungkan 1-10 komit menjadi satu komit, [seolah-olah saya hanya menyerahkan sekali] dan mengekalkan 11-100 komit yang lain tidak berubah. Bagaimana untuk mencapai
Selepas melihat git rebase -i, nampaknya hanya cawangan tempatan boleh digabungkan. Bagaimanakah cawangan terpencil akan terjejas selepas digabungkan?
git rebase -i HEAD~99
Kemudian tukar pick di hadapan 10 commit paling jauh untuk skuasy.
Kemudian force commit git push -f
Cubalah, saya tidak tahu sama ada ia berkesan
Cara yang disebutkan di atas adalah betul, tetapi ia sepatutnya
git rebase -i HEAD~100
.HEAD~99
Hanya 2 hingga 100 kiriman boleh dibaca, tetapi hantaran pertama tidak boleh dibaca.Selain itu, selepas menemui 10 komitmen terjauh, anda sebenarnya tidak perlu menukarnya kepada skuasy (atau s) Jika anda tidak bercadang untuk menyimpan maklumat komit, hanya gunakan fixup (atau f). .
Selepas pengubahsuaian, ia mestilah
git push -f
kerana garis masa anda dan cincang komit seterusnya telah berubah Sudah tentu, kod anda tidak akan berubahMemandangkan ia mungkin mengambil masa yang lama untuk menatal dari yang terakhir kepada yang pertama. . Sediakan idea lain (selepas ini, <xxx> digunakan untuk mewakili pembolehubah, dan tidak perlu menaip < dan >. Tetapi simbol lain mesti ditaip):
Buat cawangan baharu berdasarkan cawangan semasa:
git checkout -b newBranch
Kembali ke sebelum komit pertama pada cawangan baharu:
git reset --hard <commit1Hash>
Cherry pilih sepuluh komitmen pertama dan masukkannya ke dalam penimbal:
git cherry-pick -n <commit1Hash>..<commit10Hash>
Serahkan sepuluh komitmen ini.
git commit -m "<xxxx>"
Cherry pilih komitmen yang selebihnya dan jangan letakkannya dalam penimbal (tambahkan terus ke garis masa):
git cherry-pick -n <commit11Hash>..<commit100Hash>
Dengan cara ini anda telah melakukan apa yang anda mahu pada cawangan baharu. Hanya gabungkannya ke dalam cawangan yang anda mahu ubah suai