git merge和git rebase的区别

拿 feat 和 develop 分支举例

merge

将feat分支的更改合并到develop分支中,然后创建一个新的“合并提交”,所以会保留这种分叉结构,也就是保留历史(时间顺序

rebase

变基合并,会先去找这两个分支的公共节点base,然后把当前分支base之后的所有节点提交记录截取下来,嫁接到develop分支最新提交的后面,嫁接的这部分分支会成为最新的提交(跟原来的commit号不一样),打乱了原来的提交结构和时间顺序,成为线性结构

不会产生新的节点

 

在产生冲突时

merge 需要解决冲突之后提交一个合并提交;并且解决冲突之后保留记录

rebase 需要逐个解决冲突并且继续变基;不会保留记录

优缺点

综合下来

Merge具有更高的可追溯性,能够找到整个提交历史,而Rebase则让pr更整洁且易于审核

rebase 的风险及规避方法

  1. 简述:a和b都用一个分支开发,此时a修改本地代码并用rebase强制推送,若b没有同步远程代码,直接推送代码就会因为远程被修改而报错,如果再想拉取远程代码也会报错显示重复提交
  2. 本质:使用rebase必须用git push --force强推
  3. 方法:
  • 避免强制推送共享分支:git push --force-with-lease
  • 在推代码之前先拉一下远程分支

以下是参考文章及视频:

【GIT】什么?你还不知道Merge和Rebase的区别吗?_哔哩哔哩_bilibili

Git:Rebase和Merge之间的区别,看完这篇文章你就懂了!-CSDN博客

30分钟弄懂所有工作Git必备操作 / Git 入门教程_哔哩哔哩_bilibili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值