搜尋

首頁  >  問答  >  主體

git有沒有結合 rebase --onto 與 merge --squash 的操作?

原始:

A---B---C(master)
       /
      D---E---F---G(server)
         /
        H---I(client)

H, I 從 server 分支分出來,但不依賴 server,client已經完工,想單獨提取 H, I 洐合到 master, 於是執行 git rebase --onto master server client 結果是:

A---B---C(master)---H---I(client)
       /
      D---E---F---G(server)
         /
        H---I

PS: 不要覺得例子奇怪,它來自 https://git-scm.com/book/en/v2/Git-Branching-Rebasing#More-Interesting-Rebases

以上是 rebase 的操作,採用 merge 的操作,執行 git merge --squash client master; git commit, 結果是:

A---B---C(master)---J(D+H+I)
       /
      D---E---F---G(server)
         /
        H---I(client)

那麼問題來了:
有沒有類似 git merge --squash server...client mastergit rebase --onto master server client --squash

git rebase --onto master server client --squash

git rebase --onto master server client --squash🎜 或是: 實現的效果如下:🎜
A---B---C(master)---J(H+I)
       /
      D---E---F---G(server)
         /
        H---I(client)
🎜PS: 我知道可以先rebase --onto 到 temp 分支,再 merge --squash 到 master,但這太不優雅了不是? 🎜
巴扎黑巴扎黑2813 天前722

全部回覆(1)我來回復

  • 習慣沉默

    習慣沉默2017-05-02 09:32:48

    已有答案,用 rebase --interactive 做 squash 標記最好,居然忘了:

    git checkout client
    git rebase master -i

    git checkout client
    git reset --soft HEAD~2
    git commit -m 'add client'
    git checkout master
    git cherry-pick client

    看各位還有否其它思路

    回覆
    0
  • 取消回覆