git rebase 时保留原分支 merge 提交记录

为了保持分支的整洁性,我们往往会在提交 merge request 前,进行一次 rebase 操作,一般来说直接使用 webstrom 自带的 Git GUI 就够了,但是当要被合并到主干分支的分支本身就具有 merge request 的提交时,奇怪的事情发生了,原分支上的所有 merge request 提交都消失了。

让我们来复现一下,首先我们准备三个分支: masterdevelopfeat/test ,如下图:

Untitled

然后在 feat/test 分支上提交代码后,通过 merge request 的方式合并到 develop 分支。

Untitled

如果此时直接将 develop 分支提 mr 合并到 master 分支的话,不会有任何问题,但是如果 master 分支向前迭代了,那么就需要先将 develop 分支 rebase 一下 master 分支,然后再提交 mr

如下图, master 分支上有了一次 hotfix 提交。

Untitled

此时如果我们在 develop 分支上,直接 rebase 一下 master 分支,如下图:

Untitled

会发现 develop 分支上,红圈圈出来的两次 merge request 提交没有了, develop 分支的提交被打平了,从代码的角度来说,这样也不会有任何问题,以为每次 mr 的提交记录,其实是一次空提交,如果就这样直接基于 develop 分支提 mrmaster 分支也是 ok 的,不会影响代码和功能。

但是我个人的习惯,是比较倾向于能保留这些分支上的 mr 提交记录的(因为 develop 分支禁止直接 push,只允许使用 mr 合并代码,所以保留 mr 记录会显得更规范一些),那么如何操作呢,经过一番搜索,发现 git rebase 命令,具有一个 -rebase-merges 参数,只要在执行时带上这个参数,所有的 mr 提交记录就都会保留了,如下图:

Untitled

但是比较遗憾的是 webstormGit GUI 好像不支持在执行 rebase 操作时指定参数,所以如果有此种需求的话,就得手动执行 git rebase origin/master --rebase-merges 命令才行。

需要注意的是,就算是使用的命令手动执行 rebase 操作,也可以使用 webstormdiff 功能来解决冲突,然后再 continue

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值