Rumah > Soal Jawab > teks badan
Asal:
A---B---C(master)
/
D---E---F---G(server)
/
H---I(client)
H, saya bercabang dari cawangan pelayan, tetapi tidak bergantung pada pelayan telah selesai Saya ingin mengekstrak H, saya secara berasingan dan menggabungkannya ke dalam master, jadi saya melaksanakan git rebase --onto master server client
dan. hasilnya ialah:
A---B---C(master)---H---I(client)
/
D---E---F---G(server)
/
H---I
PS: Jangan fikir contoh itu pelik, ia datang dari https://git-scm.com/book/en/v2/Git-Branching-Rebasing#More-Interesting-Rebases
Di atas ialah operasi rebase, menggunakan operasi gabungan, laksanakan git merge --squash client master; git commit
, hasilnya ialah:
A---B---C(master)---J(D+H+I)
/
D---E---F---G(server)
/
H---I(client)
Maka persoalannya ialah:
Adakah terdapat operasi yang serupa dengan git merge --squash server...client master
atau git rebase --onto master server client --squash
Kesannya adalah seperti berikut:
A---B---C(master)---J(H+I)
/
D---E---F---G(server)
/
H---I(client)
PS: Saya tahu anda boleh rebase --ke cawangan temp dahulu, dan kemudian gabungkan --skuasy untuk menguasai, tetapi ini terlalu tidak elegan, bukan?
習慣沉默2017-05-02 09:32:48
Sudah ada jawapan Sebaik-baiknya gunakan rebase --interactive untuk menandakan skuasy, tetapi saya terlupa:
git checkout client
git rebase master -i
atau
git checkout client
git reset --soft HEAD~2
git commit -m 'add client'
git checkout master
git cherry-pick client
Mari lihat jika anda mempunyai idea lain