Git系列笔记(2)- git rebase的使用总结

1. 使用场景

在日常开发中,我们从主分支上拉出来一个feature分支,并在feature分支上进行了若干提交(c2,c3,c4),同时,master分支上其他的开发人员也push了新的提交(c5, c6)。feature分支开发完成,发起merge request请求合并到主分支,就会产生冲突。这时候,解决冲突有两种方式,一种是将master分支merger到feature分支上,合并时解决冲突,这样做feature分支上会有一个合并提交,包括为解决冲突所做的修改。另外一种是将feature分支rebase到master分支的最新提交,并在rebase过程中解决冲突。区别是,merge会引入新提交。这里我们讲rebase。
在这里插入图片描述

2. git rebase 原理

当在feature分支上执行git rebase master时,将从双方共同祖先(C1)开始,将feature分支上每个提交对应的变更暂存起来,然后以master分支最后一个提交(C6)为新起点,将暂存的变更按顺序一一还原成新提交。
在这里插入图片描述

3. 基本命令使用方法

  1. 执行前先把master分支和feature分支更新到最新。
  2. 切换到feature分支:> 执行 git rebase master
    如果没有冲突会提示成功,如图:
    在这里插入图片描述
  3. 先git pull 再git push,把暂存的变更搬移到新基线上:在这里插入图片描述注意: 如果不git pull直接git push会报错,并提示在push之前要先pull:在这里插入图片描述

4. 交互式rebase

交互式rebase被广泛应用在不希望重设基线,但又需要调整历史提交记录的场景中,
重排、压缩、拆分、丢弃。
git rebase -i master
唤起编辑器并加载预加载一个文档,文档正文部分是to-do list,列出的是提交的历史记录。每个提交默认是pick指令,通过修改响应的指令实现对历史提交记录的重排、压缩、拆分、丢弃。
在这里插入图片描述
常用的命令:
r: 选用该提交,同时让修改提交信息。
s: 选用该提交,但将该提交的变更压缩到上一个提交中,不单独生成提交。
d: 丢弃该提交及其相关的变更。

5. 举例说明

1)把C3的变更调整到C2的前面:

在这里插入图片描述

2)合并C2和C3的变更:

在这里插入图片描述

3)丢弃C3的变更:

在这里插入图片描述

4)综合使用场景,修改提交记录。

例如,在feature分支上发现对最近的6个提交不太满意,需要调整顺序,删除,合并等。
使用命令: git rebase -i HEAD~6 对前6个提交进行编辑。
在这里插入图片描述

tips:

git merge 和git rebase不同:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值