Git必知必会基础(11):merge和rebase的区别

本文回顾了gitmerge和gitrebase在合并分支时的使用方法,比较了两者的特点:merge保留分支独立性但导致合并图非线性;rebase使合并图线性但可能影响分支独立性。还提供了rebase的一些注意事项,如避免在master分支上rebase和仅对自己未推送的分支操作。
摘要由CSDN通过智能技术生成

本系列汇总,请查看这里https://www.cnblogs.com/uncleyong/p/10854115.html

merge和rebase使用回顾

上两篇我们分别演示了merge和rebase的使用,分别详见:

https://www.cnblogs.com/uncleyong/p/17967432

https://www.cnblogs.com/uncleyong/p/17978213

下面我们来总结下二者的差异。

merge

作用:git merge用来合并分支,用于将两个或多个分支的代码合并到一个新的或现有的分支中

合并:会产生一个新的合并提交,并且每个分支的历史记录都会保存(不修改提交历史,可以清晰地看到哪些提交是在哪个分支上完成的)

将dev合并到master

1、dev commit

2、切换到master,与origin/master同步

3、git merge dev

优点:合并保留了每个分支的独立性,即使两个分支合并了,它们的提交历史仍然可以追溯到各自的起点

缺点:合并图非线性,如果分支多且合并多,互相交叉,易读性不高

合并前

合并后

95fc216以下是merge的合并图

rebase

作用:git rebase用来变基,就是重新定义(re)起点(base)的作用,即重新定义分支的版本,能实现和merge相同的效果,将一个分支的修改合并到另一个分支上

合并:会将当前分支的提交“挪动”到rebase的目标分支上,使得分支的提交历史变得更加线性;会修改提交历史,因为它将当前分支的提交重新应用到了新的基础上

将dev合并到master

1、dev commit

2、切换到master,与origin/master同步

3、切换到dev,git rebase maser,如果有冲突就修改冲突文件,git rebase --continue

4、切换到master,git merge dev

优点:git rebase 对两个分叉的分支合并后,历史记录是一条直线(线性),会显得更为整洁,合并图更易读

缺点:由于 rebase 将提交历史变得线性,所以在 rebase 后,你无法直观地看出哪些提交是在原分支上完成的,可能会丢失分支的独立性

另外:

1、不要对master分支进行rebase

2、仅对本地自己的提交且没有推送到远程仓库的分支做rebase操作

合并前

合并中

合并后

95fc216以上是rebase的合并图

【bak】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值