cari

Rumah  >  Soal Jawab  >  teks badan

Adakah git menggabungkan operasi rebase --onto dan merge --squash?

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?

巴扎黑巴扎黑2795 hari yang lalu717

membalas semua(1)saya akan balas

  • 習慣沉默

    習慣沉默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

    balas
    0
  • Batalbalas