git有沒有結合 rebase --onto 與 merge --squash 的操作?
巴扎黑
巴扎黑 2017-05-02 09:30:48
0
1
711

原始:

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,但這太不優雅了不是? 🎜
巴扎黑
巴扎黑

全部回覆(1)
習慣沉默

已有答案,用 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

看各位還有否其它思路

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板