git rebase操作

git rebase 算是git里的高级操作了,他主要用来解决两种情况。

  1. 有时候我们对于一个简单的需求提交了多次,这样非常不利于code review,所以我们需要将多次提交合并成一次提交。(即多次commit合并成一次commit)
  2. 你从master创建一个分支开发,然后你的同事又从master创建一个分支开发,但是他比你先提交,所以远程的master分支比你的本地master走的远,所以现在要将你的分支代码基于远程的master来实现提交
第一种情况
  1. 我们先创建一个文件test.txt,然后提交到master
    在这里插入图片描述
    在这里插入图片描述
  2. 我们创建一个分支rebasetest, 然后修改提交
    在这里插入图片描述
  3. 我们对这个分支的test.txt进行多次修改提交,分别添加b、c、d,提交b、c、d
    在这里插入图片描述
    在这里插入图片描述
  4. 接下来就要用git rebase来将提交a、b、c合并成一次提交
    执行git rebase -i head~3命令,表示将最近的3次提交进行rebase操作,然后进入下面编辑界面,包含了最近3次提交的信息。
    在这里插入图片描述
    我们将下面两次提交的pick操作改成s(是squash的缩写),代表将当前提交合并到上面的提交,然后保存退出(退出后进行合并可能产生冲突,这时候需要我们解决冲突,然后执行git add . 和git rebase --continue来继续rebase操作。具体的会在第二种情况有操作)。
    在这里插入图片描述
    合并完成后就会转到下一个编辑界面,需要我们编辑提交的信息,默认为3次提交信息的合并
    在这里插入图片描述
    这里我们修改一下提交信息,修改成最后一次的提交信息,即把b、c注释掉,然后保存退出
    在这里插入图片描述
    我们再来看一下提交的日志,已经成功将3次提交合并
    在这里插入图片描述

第二种操作

我们回到master分支,然后修改test.txt,提交信息为e
在这里插入图片描述
这个时候我们对比一下master和rebasetest两个分支的log信息,如下
在这里插入图片描述
在这里插入图片描述
我们看到,rebasetest分支是在master提交a后创建并修改的,但这个时候master已经有了e的提交信息,所以我们认为master分支走的比rebasetest分支远(在开发中,我们是以master为主要分支的,所有其他分支的代码都会合到master),所以我们需要先在rebasetest分支上执行rebase操作,然后再将rebasetest分支合并到master
在这里插入图片描述
提示执行失败,那是因为自动合并时产生了冲突并进入了一个临时分支,我们看一下现在test. txt的内容
在这里插入图片描述
所以现在我们需要解决冲突,解决冲突可以看我前面的文章,下面是我解决后的内容
在这里插入图片描述
解决后,我们执行git add .保存修改,然后这些git rebase --continue 继续执行rebase操作
在这里插入图片描述
当rebase操作完成后,我们会重新回到rebasetest分支,我们看一下现在的git log
在这里插入图片描述
我们已经成功将master分支的修改合并到了rebasetest分支。现在我们将rebasetest分支的修改合并到master
在这里插入图片描述
我们看到合并非常顺利,因为我们已经在rebase的时候解决了冲突,再来看一下git log
在这里插入图片描述
log非常干净,根本没有合并分支的提交信息,这样就保证了提交的简洁,非常有利于查看提交信息和各个提交修改了什么。

git rebase --abort

当我们在执行rebase操作是,如果出现我们无法掌控我情况ian,可以随时执行git rebase --abort操作来取消rebase操作,就会恢复到rebase之前的状态

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值