git合并的merge与rebase的区别以及各自的操作命令

merge

  • 假设现在有2个分支,一个master主分支,一个是branchA你的个人分支
C1
C2
C3
C4
C5
  • C3是master 、C4 C5 是branchA
    现在需要合并代码,假设你在自己的分支操作(一般尽量都在自己分支操作)

使用merge合并

$git checkout branchA   // 切换到自己的分支
$ git merge master
  • 这就将master分支上的C3合并到了你的branchA本地分支,合并之后会在你的分支后自动创建一个新的commit
C1
C2
C3
C6
C4
C5
  • C6就是合并之后的。C3这个commit记录也会依然存在

使用rebase合并

  • 即好像将你需要去rebase的分支拔下来然后重新插到另一个分支上,👆上面这个例子就像是要把C3拔下来,按顺序插到下面来
  • rebase原理是先找到两个分支的最近的共同祖先C2,对比当前分支相对于C2的修改并存为临时文件,(就是将C3相对于C2的修改部分存为临时文件)再将当前分支指向目标基底C5,C3再依序应用
C1
C2
C3
C3'
C4
C5
C6
  • 在对特征分支进行rebase之后,其等效于创建了新的提交。并且老的提交也没有被销毁,只是简单地不能再被访问或者使用。
  • 此时的C3其实是看不到,也不能被访问或者使用了的,(这里是为了方便理解)
  • 正常在一些管理工具上看到的是一条线
C1
C2
C3'
C4
C5
C6

rebase 参考文献:
Git Rebase原理以及黄金准则详解
变基(rebase和merge的区别)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值