闲话git merge 与 git rebase 的区别

最近换工作,面试碰到一次笔试考这两个的区别。开始学习git的时候,这两个的区别是有了解过的。但是时间长了加上之前公司应用得少了,所以当时记得很模糊。笔试完就赶紧回家整理了下,希望可以借此加深印象。

merge

如果一开始我们的分支情况如下图,有一个主分支 master 及一个开发分支 deve:

(SourceTree中的分支截图)

假定我们目前处在 master 主分支上,进行 git merge deve 操作会发生什么呢?

Git 系统会以两个分支的共同祖先 e381a81 为基础,将两个分支的最新提交 8ab7cff 和 696398a 进行三方合并(分支路径没有合并),然后将合并中修改的内容生成一个新的 commit,即下图的 78941cb:

这里写图片描述

rebase

假如我们初始的分支情况如下图:

这里写图片描述

我们还是处在 master 分支上,我们进行 git rebase deve 操作。这时 Git 系统会将 master 上的最新提交 85841be、a016f64 与 e53ec51 合并到deve中最新提交 35b6708 后面,丢失掉自己分支的历史版本信息,从而使两个分支暂时合成一根线,如下图所示:

这里写图片描述

merge 和 rebase 的区别对比:

对比项mergerebase
操作过程将两个分支的修改信息合并提取当前分支的修改,复制到目标分支的最新提交后面
分支路径多条,各自显示,互不干扰单条,合在一起显示
历史版本信息忠实反映各分支实际发生过什么只反映项目过程中发生过什么
冲突处理遇见冲突后会直接停止,等待手动解决冲突并重新提交 commit 后,才能再次 merge遇见冲突后会暂停当前操作,开发者可以选择手动解决冲突,然后 git rebase –continue 继续,或者 –skip 跳过(注意此操作中当前分支的修改会直接覆盖目标分支的冲突部分),亦或者 –abort 直接停止该次 rebase 操作
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值