git rebase 合并commit日志

git rebase -i 实现合并commit

前言:在开发过程往往在开发分支下有几十个commit记录,而这个时候合并到master分支上,导致对于master分支来说存在没有意义的commit,在master分支上的提交应该只记录每次发版上线的版本号即可,便于回退,不需要记录那些开发分支上的commit,所以我们需要合并commit
假设我们目前的份上有3个commit分别是1,2,3

在这里插入图片描述

那这个时候我们需要把这2跟3合并成一个commit记录,那我们需要在git上输入命令
git rebase -i 86fe8c91c4fcbe4f86838e503a8ba1835413c708  // -i 后面跟的是需要合并的提交再往前一个提交,因为这里要合并2跟3,所以这里的id是1的commit id , 如果要合并1,2,3 那就需要找到1再往前一个的commit id
这个时候会进入vim的编辑器

在这里插入图片描述

这个时候我们在键盘上敲下i,让vim编辑器进入写入状态

在这里插入图片描述

然后可以移动光标,除了第一行之外的提交,全部将pick修改为squash(此处博主不知道为什么第一行不能修改为squash,其他行就可以,有知道的小伙伴可以告诉我),squash代表是需要被合并的提交,这里我们把3的合并到2中,所以把3的pick,修改为squash,要合并多个就修改多个即可

在这里插入图片描述

然后摁esc退出写入模式,然后直接输入:wq回车,即可保存退出vim模式,成功之后,会立刻进入commit编辑模式,这里是让我们给这个合并提交,写一些commit的信息

在这里插入图片描述

两个编辑器命令一样,摁i,进入写入模式,然后回车空出第一行来写一个信息记录这次的commit,这里随意发挥,然后同样的ESC之后,:wq保存退出

在这里插入图片描述

成功退出之后,可以看log,就发现2,3被合并了,至此合并commit就成功了~~

在这里插入图片描述

这个时候如果要提交到远程仓库是会报错的,如果分支只有你一个开发的话,那就直接使用git push --force origin 分支名 这种强制覆盖的方式推送即可,这个操作会覆盖别人的提交,要谨慎使用

此处提一点,这个操作存在风险,如果操作出现失误或发现进入了 分支名 | rebase的状态,可以通过git rebase --abort放弃之前的合并操作
注意,合并提交并不是完全自由选择的,需要选择一个commit id作为锚点,只能合并之后的commit,比如上述的列子,选择1作为合并的锚点,那只能合并2跟3,如果要合并1,2,3 那就要选择1之前的commit id作为锚点,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值