Git rebase : 合并多个已经push的commit

在项目实践中,我们经常会遇到以下场景,需要结合git命令来进行操作。

一 合并多个已经push的commit

这种情况分两种情况:

  1. 只有一个分支,基于当前分支合并,多用于自己写项目玩玩。
  2. 当前的工作分支只是一个子分支,比如是基于develop(主分支)新建的分支,还有很多小伙伴基于develop分支创建分支,然后合并代码到主分支,这种情况在实际项目中比较常见。

对于第一种情况,如果想要合并前面已经push的几次commit,比如前三次,网上有很多地方提到,使用下面的命令就好:

git rebase -i HEAD~3

// or

git log //先获取commit log, 找到想要rebase的commit id(a027673196c2101e512893641b92c60cb60c3920)

git rebase a027673196c210  //取前几位就行

git rebase之后会弹出相应的vi编辑器,按键盘上的‘i’,进入编辑模式, 根据自己的需求把后两行的需求改成 'f' 或者 's',f 和 s代表的意思在下面Commands有详细的解释,如果不想看,可以无脑改成 'f'. 然后在键盘上按  ':wq' 退出并保存。这时候rebase就开始了。

注意:如果rabase过程中有冲突,先去处理代码冲突(我一般在vscode中直接处理)。然后

git rebase --continue

rabase成功后,git push -f,再提交一次,就会发现之前的N多次commit已经合并成一个了。

对于第二种情况,因为develop分支是不断变化的,其他人merge代码到develop,我们为了以后自己的代码提PR时没有冲突,把当前develop最新的代码也更新到自己的分支(这个是另一个知识点),然后,自己也提交了commit,这种情况下,commit记录就会比较混乱,既有merge develop的记录,也有自己真正commit的记录,也有可能有pull的记录,这个时候,我们需要下面的命令来合并commit:

git rebase -i origin/develop //develop换成你的主分支名字

剩下的操作和上面基本一致,不赘述。

 

  • 8
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值