如何合并分支上部分几个连续的commit为一个commit到主分支上?

image.png

如上图,我想实现图上的效果,合并dev分支上历史连续提交的几个commit为一个到master主分支上,但是并不合并到最新

我知道直接合并分支到最新的提交为一个commit是以下代码

git merge --squash dev

但是不想合并到最新应该如何操作呢?

可能还会有下面的需求
image.png

将上面不同的连续几个分别合并成几个commit到master上

阅读 3k
5 个回答
新手上路,请多包涵
  1. 使用git rebase先把几个commit合并成一个,再merge过去
  2. 先merge过去,然后再把这几个commit使用git rebase合并成一个commit

PS:不要问我git rebase怎么用,请自行查资料学习。

git rebase 可以合并多个 commit

我写了个工具,提供自动合并功能

npm i @wzyjs/cli -g

然后执行命令

mi m // 自动合并最近连续相同 content 的提交
mi m --commit // 合并前自动把当前改变的内容提交
mi m --push // 合并后自动推送
mi m --count 3 // 合并最近的 3 个提交
新手上路,请多包涵

直接使用cherry-pick就可以了,可以合并源分支的某次或某几次的提交

如果是你这种一段一段连续的,可以参考git rebase,但是我印象中rebase有时候好像会自动合在后面,不能把好几个commit合在一起;

还有一种就是format-patch,把你要的commit打成patch,然后apply到master,攒够你就commit一次

用工具吧,sourcetree,遴选。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏