Git变基(流程分析)

概念:也称“衍合”,改变分支的根基,即分支的提交历史会被改变

原理:在kenny-feng分支,输入git rebase master,会将kenny-feng分支上的所有节点拿到master分支的最后面,使kenny-feng分支的根基(c1→c4→c5)变为master分支的根基(c1→c2→c3)

补充:c4和c4’,c5和c5’,内容一样,但commitID不一样,因为任何分支上的节点的commitID都是唯一的

但在此过程中,可能会内容冲突,即:c3可能会和c4、c5的内容冲突,此时kenny-feng分支将进入kenny-feng|REBASE 1/2状态(“1/2”表示共有2个变基点,现处于需要解决第1个变基点),有三种选择:

(一)git rebase --skip

作用:忽略冲突,放弃rebase所在分支的修改,直接使用其它分支

(二)git rebase --continue

作用:解决冲突,vi→add→continue(不需要commit)

(三)git rebase --abort

作用:终止冲突,还原到rebase之前的状态

选择(一):

c3和c4冲突,skip是放弃c4’的内容,采用c3的内容,所以skip后,c4’的内容是c3而不是c4,且此时会进入kenny-feng|REBASE 2/2状态,即skip后的内容和c5冲突,再次skip,放弃c5的内容,由于放弃了自身的c4和c5,所以kenny-feng分支最终为:c1→c2→c3,并恢复到kenny-feng状态,kenny-feng指针指向c3,master依旧指向c3

选择(二):

c3和c4冲突,手动解决vi→add后,执行continue,会进入kenny-feng|REBASE 2/2状态,再次vi→add后,执行continue,所以kenny-feng分支最终为:c1→c2→c3→c4’→c5’,且c3、c4’、c5’内容都不一样,并恢复到kenny-feng状态,kenny-feng指针指向c5’,master依旧指向c3

选择(三):

不管是处于kenny-feng|REBASE 1/2状态,还是kenny-feng|REBASE 2/2状态,一旦abort后,就会还原到rebase之前的状态,所以kenny-feng分支最终为:c1→c4→c5,并恢复到kenny-feng状态,kenny-feng指针指向c5,master依旧指向c3

建议:由于rebase会改变提交历史,所以rebase分支只在本机操作,不要推送到GitHub,也不要再master上直接rebase

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值