Git:Rebase和Merge之间的区别

这篇具有很好参考价值的文章主要介绍了Git:Rebase和Merge之间的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、merge

Git:Rebase和Merge之间的区别

merge的原理是找到这两个分支的祖先commit,在两个分支最新的commit进行三方对比合并
例如下图,共同的祖先commit2,master最新commit6,develop最新commit5,merge会基于2,5,6这三个commit进行对比:

  1. commit6和commit2对比,如果文件的哈希值不一样,同时commit5和commit2对比,发现一样,说明只有commit6修改了这个文件,这种情况直接合并,不会提示
  2. commit6和commit2对比,如果文件的哈希值不一样,同时commit5和commit2对比,哈希值不一样,说明两个分支都对同一个文件修改了,则提示冲突,需要我们手动merge

最后合并完后会生成一个新的commit7

二、rebase

Git:Rebase和Merge之间的区别重新基于一个分支上进行commit,就是会把当前分支从祖先的commit后提交的commit都撤销掉,放到一个缓存里面去,然后基于一个分支的后面,把缓存的commit再按顺序一个个新增到这个分支后面
例如上图,在develop分支进行rebase master分支,则会把develop分支上的基于和master共同的祖先分支commit2的后面的commit4,5撤销掉在master的最新的commit6后面重新增加commit4,5上去,这时候develop相当于在master最新的commit上逐步提交了两个commit4,5 

这里新增了commit4,5,在merge时有可能都会有冲突,这里有可能需要手动merge两次,因为rebase时可能在提交commit4的时候提示冲突一次,在提交commit5的时候又冲突一次

三、merge和rebase的优缺点

  • rebase:合并后分支图谱好看,一条线,但合并过程中出现冲突的话,比较麻烦(rebase过程中,一个commit出现冲突,下一个commit也极有可能出现冲突,一次rebase可能要解决多次冲突);
  • merge:合并后分支图谱不好看,一堆线交错,但合并有冲突的话,只要解一次就行了;
  • 一般的做法,如果合并分支的共同祖先分支相差一两个或两三个commit的话,就用rebase,毕竟rebase合并后好看,分支图谱明确,
    如果和共同祖先分支相差很多个commit,说明rebase有可能出现多次冲突,合并会很麻烦,这时候就用merge

参考博客:http://t.csdn.cn/2U6au文章来源地址https://www.toymoban.com/news/detail-512470.html

到了这里,关于Git:Rebase和Merge之间的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Git:git merge和git rebase的区别

    git merge是用来合并两个分支的。比如:将 b 分支合并到当前分支。同样git rebase b,也是把 b 分支合并到当前分支。他们的 「原理」如下: 假设你现在基于远程分支\\\"origin\\\",创建一个叫\\\"mywork\\\"的分支。 $ git checkout -b mywork origin 假设远程分支\\\"origin\\\"已经有了 2 个提交,如下。 现在

    2024年02月16日
    浏览(42)
  • Git分支的合并策略有哪些?Merge和Rebase有什么区别?关于Merge和Rebase的使用建议

    参考:《Git 权威指南》、《Git团队协作》、快手git管理 (1)工作区域 首先来介绍介绍下Git的工作区域,分为 工作区 、 暂存区 和 仓库区 ,每个区域的转换关系如上图所示。 工作区(workspace) :就是我们平时本地存放项目代码的地方; 暂存区(index/stage) :用于临时存放

    2024年02月04日
    浏览(62)
  • git rebase与git merge图文详解(一文看懂区别)

    大家在工作中团队开发的时候对于拉取分支和合并代码时就会涉及到两种选择,git rebase与git merge: rebase:变基,会有一个干净的分支,但是对于记录来源不够清晰 merge:合并,git分支看起来比较混乱,但是清楚各个记录的来源与时间节点 推荐:全部使用merge 拉公共分支使用

    2024年01月18日
    浏览(50)
  • Idea使用git拉取代码 : (git merge、git rebase)区别

    我们使用pull拉取远程仓库的代码时,通常有两个选项,一个是 merge ,一个是 rebase ,这两个之间有什么区别呢? 这两个选项都是将远程仓库的代码合并到本地仓库的代码,但是在使用上是不同的。 1、使用merge合并远程仓库的代码是按照代码的提交时间进行展示的,也就是说使用m

    2024年02月16日
    浏览(47)
  • git合并代码命令 分支合并代码 cherry-pick merge rebase区别

    1.cherry-pick 需要注意 暂存未提交的更改 暂存更改: 使用git stash或git stash push命令暂存当前工作目录和暂存区的更改。你可以提供一个消息作为参数,以便更容易地识别stash项: 执行cherry-pick: 现在,你的工作目录是干净的,可以安全地执行cherry-pick操作了。找到你想要cherry

    2024年04月12日
    浏览(48)
  • Merge和Rebase的区别

    Merge 和 Rebase 是 Git 中常用的两种分支整合方式,它们具有不同的工作原理和效果: Merge(合并) 合并是将两个或多个分支的提交历史合并为一个新的提交。在合并时,Git 会创建一个新的合并提交,将两个分支的修改合并在一起。合并提交将包含两个分支的修改,并且保留了

    2024年02月14日
    浏览(35)
  • git merge与git rebase详解

    参考:         http://t.csdn.cn/CkVrR         https://blog.csdn.net/weixin_42310154/article/details/119004977 (1)merge  (2)rebase 经验:         一般来说,不推荐使用rebase。         但为了让分支树看起来更简化,个人分枝偶尔也会选用rebase。这样可以线性的看到每一次提交,

    2024年02月16日
    浏览(39)
  • 【git merge/rebase】详解合并代码、解决冲突

    目录 1.概述 2.merge 3.rebase 4.merge和rabase的区别 5.解决冲突 在实际开发中,一个项目往往是多个人一起协作的,头天下班前大家把代码交到远端仓库,第二天工作的第一件事情都是从服务器上拉最新的代码,保证代码版本的一致性。在这种团队协作中大家修改到同一份文件是难

    2024年02月08日
    浏览(56)
  • git 三种合并方式(rebase / merge / squash)

    在使用 Git (分布式版本控制系统),往往不会直接在主分支上面直接开发,而是新建一个分支进行开发。 那么当我们在新分支上面完成一个功能时,便需要合并到主分支。 merge rebase and merge squash and merge 初始化 图 1 图1,初始两个分支的状态,现基于此对合并(merge)和变基

    2024年03月11日
    浏览(58)
  • IDEA git 操作中的Merge和Rebase

    \\\"Merge incoming changes into the current branch\\\"和\\\"Rebase the current branch on top of incoming changes\\\"都是在Git中常用的合并分支的方式。 它们的主要区别在于合并后的分支历史记录和代码改动的顺序不同。 \\\"Merge incoming changes into the current branch\\\"会将远程分支的改动合并到当前分支的新提交中。这

    2024年02月16日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包