git-merge和rebase的区别

https://mp.weixin.qq.com/s?__biz=MzI0MDQ4MTM5NQ==&mid=2247492813&idx=1&sn=886c2e6a4773fcdcaadb3e6034c07a52&chksm=e91881d1de6f08c7d8fc94dcd0f571442e665d1b6a99ab42fc72608aa7cff0adcda7b8f9324e&token=922677949&lang=zh_CN#rd

https://blog.csdn.net/weixin_45565886/article/details/133798840?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-1-133798840-blog-127692264.235v43pc_blog_bottom_relevance_base9&spm=1001.2101.3001.4242.2&utm_relevant_index=4

一、com

merge和rebase都可以用来进行代码合并,也就是分支合并。

merge的设计目标就是用来进行分支合并,并且保留所有分支和所有分支的历史纪录。但rebase还有别的使用场景,比如更新当前分支的起点,跟master保持一致。

rebase的设计目标用来修改提交记录,它可以删除、合并、修改commit,其中合并commit其实就变相实现了分支合并。比如从master创建了一个feature分支,正开发着,别人又向master提交了一次版本,这就像所有人都想用最新版的手机一样,那我也想在最新版的代码上开发,此时就可以用rebase,即更新了代码,又把我自己的提交放在了最前面。如果此时用merge,那最前面的提交还不一定是我的。

二、原理

merge

merging分支包含current分支的所有commits:fast-forward模式,直接合并,此时等价于rebase,不会有新的commit。
current分支包含merging分支不存在的commits:no-fast-forward模式,找到2个分支的共同起点,用合并后的变更生成一个新的commit提交到current分支。

rebase

复制当前分支的所有新提交,然后将这些变换生成commit提交到基干分支的最前面,复制的这些分支的commitID都会变化。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值