git merge和git rebase的区别

场景:

基于main分支创建了一个特性分支feature,在feature上新增了C2C3C4提交

同时main分支上又合入了其他提交

这时如果要将main分支上新引入的这些变更也整合进feature分支,此时使用merge还是rebase

相同点:merge还是rebase都具备整合分支的能力

不同点:实现方式

merge

feature上执行git merge main时,git会以我方(feature)、对方(main)以及双方最近公共祖先对应的快照执行三路合并生成新快照,并基于此快照创建一个连接feature分支和main的合并节点,最后调整feature的指向

结论:merge总是在向前推进提交历史,并不会影响提交的原始状态

rebase

整合方式是对提交历史的重写,在feature上执行git rebase main时,git会从双方最近的公共祖先开始,将feature上每个提交对应的变更暂存起来,然后以main分支所指向的提交为新起点,将暂存的变更按顺序一一还原成新提交。rebase完成后,feature分支的起始点变成了main分支最后的快照

通常情况下:merge还是rebase,特性分支feature最终所指向的快照完全相同。也就是说merge合成的快照和rebase重建出的快照所对应的代码内容是完全相同的,但却构建出了不同的提交历史

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值