Adakah git menggabungkan operasi rebase --onto dan merge --squash?
巴扎黑
巴扎黑 2017-05-02 09:30:48
0
1
707

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?

巴扎黑
巴扎黑

membalas semua(1)
習慣沉默

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan