git有没有结合 rebase --onto 与 merge --squash 的操作?

 叫我小小小火枪的天空_603 发布于 2022-10-25 09:54

原始:

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 master 或者 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

    看各位还有否其它思路

    2022-10-26 23:10 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有