Git变基操作

首先要清楚一件事变基本质是一次merge,只是rebase之后相对于普通的merge,在主干分支(比如master)上的提交历史更加简洁,只需要查询master分支就可以了解所有分支开发的的提交历史

下面通过比较普通的merge说明其具体原理

普通的一次merge

merge之前
普通merge
merge过程通过找到两个分支最近的公共祖先(C2),然后和两个分支的最新版本C4,C3进行一次三方合并,产生C5版本作为两个分支的合并之后的版本结果如下
merge之后
在这里插入图片描述
merge过程本身也确实保存了分支的修改信息,但是此时提交历史就不再整洁,比如在experiment上不止进行了一次提交,还有C4.1, C4.2那么这两个版本在merge之后就无法查看对应的提交信息,修改情况这也是rebase产生的原因

rebase过程

rebase之前
在这里插入图片描述
执行下面rebase命令之后

$ git checkout experiment
$ git rebase master

在这里插入图片描述
它的原理是首先找到这两个分支(即当前分支 experiment、变基操作的目标基底分支 master) 的最近共同祖先 C2,然后对比当前分支相对于该祖先的历次提交,提取相应的修改并存为临时文件, 然后将当前分支指向目标基底 C3, 最后以此将之前另存为临时文件的修改依序应用
依序应用表明在分支开发中历次版本都会作为C3之后的版本被记录,就好像在分支开发的过程整个复制到了master分支上,和在master分支上开发效果类似

之后还需要把master分支指针指向前面的最新版本,切换回master分支进行一次快速合并

$ git checkout master
$ git merge experiment

完成以后版本如下所示:
在这里插入图片描述

如果分支开发中有C4.1. C4.2也都会出现在master分支的主干历史上,提交历史就会变得非常简洁

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值