git merge与git rebase详解

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

参考:

        http://t.csdn.cn/CkVrR

        https://blog.csdn.net/weixin_42310154/article/details/119004977

一、简单图示

(1)merge

 (2)rebase

经验:

        一般来说,不推荐使用rebase。

        但为了让分支树看起来更简化,个人分枝偶尔也会选用rebase。这样可以线性的看到每一次提交,并且没有增加提交节点。  但这样会存在缺陷:公共分支上rebase会打乱且篡改提交记录,若别人想看该公共分支的历史提交记录,它看到的不是完整的历史记录。

        并且正在开发的其他分支会定期从master上合并代码,使开发分支保持最新。由于在master执行了rebase,maser历史会形成全新的提交。当合并过来后,git会认为和本地开发分支不一样,增加冲突可能性,更不知道代码提交顺序性,造成许多诡异现象。

二、区别

1、rebase 的冲突需要一个一个解决,如果有十个冲突,得先解决完第一个,然后执行如下命令后才会出现第二个冲突,直到所有冲突解决完。而merge 是一次性将所有的冲突都显示出来。

git add -u
git rebase --continue
  • rebase工作流
  • git rebase 
    while(存在冲突) {
        git status
        找到当前冲突文件,编辑解决冲突
        git add -u
        git rebase --continue
        if( git rebase --abort )
            break; 
    }
    
  • merge工作流 
  • git pull
    编辑冲突文件
    git add .
    git commit -m "feat: this is a comment"
    git push

另外,在rebase过程中,若想中途退出并恢复到rebase前的代码,可以用命令:

git rebase --abort

三、适用场景

  • git merge适合公共分支,将其他分支合并到公共分支,merge操作两个分支最新的提交点会形成新的一个提交点,使后合并进来的commit记录仍然保持在后边。(merge以后会多出无意义的一条提交记录“Merge … to …”)
  • git rebase适合个人分支(只自己一个人提交)。日常开发过程中,个人分支代码需要和公共分支代码保持一致最新,定期合并公共分支代码到个人分支。执行rebase操作后,会从指定分支上合并别人新的commit在我们的commit之前。(缺点是rebase以后就不知道当前分支最早是从哪个分支拉出来的了,因为基底变了)

四、图解举例演示说明

背景:

        两个分支master和feature,

        其中feature是在提交点B处从master上拉出的分支;

        master上有一个新提交M,feature上有两个新提交C和D;

git merge rebase,Git,git

        此时在feature分支上,执行 git rebase master 命令,相当于是想要把master分支合并到feature分支(这一步的场景就可以类比为我们在自己的分支feature上开发了一段时间了,准备从主干master上拉一下最新改动)。

下图为变基后的提交节点图:

git merge rebase,Git,git

 解释下工作原理:

  • feature:待变基分支、当前分支
  • master:基分支、目标分支

        rebase,变基,可以直接理解为改变基底。

        feature分支是基于master分支的B拉出来的分支,feature的基底是B。而master在B之后有新的提交,就相当于此时要用master上新的提交来作为feature分支的新基底。实际操作为把B之后feature的提交暂存下来,然后删掉原来这些提交,再找到master的最新提交位置,把暂存下来的提交再接上去(新节点新commit id),如此feature分支的基底就相当于变成了M而不是原来的B了。

(注意:如果master上在B以后没有新提交,那么就还是用原来的B作为基,rebase操作相当于无效,此时和git merge就基本没区别了,差异只在于git merge会多一条记录Merge操作的提交记录)

上面的例子也可实例化为如下工作场景:

        张三从B拉了代码进行开发,目前提交了两次,开发到D了;李四也从B拉出来开发了并且开发完毕,他提交到了M,然后合到主干上了。此时张三想拉下最新代码,于是他在feature分支上执行了git rebase master,即把master分支给rebase过来,由于李四更早开发完并合了主干,如此就相当于张三是基于李四的最新提交M进行的开发了。文章来源地址https://www.toymoban.com/news/detail-566915.html

到了这里,关于git merge与git rebase详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • git merge 和git rebase的区别

    在Git版本控制系统中,有两种方式可以将一个分支的更改合并到另一个分支: git merge 和 git rebase 。虽然它们都可以完成相同的任务,但它们的实现方式有所不同,并且在使用时需要谨慎考虑。 git merge 将两个分支的更改合并到一起,形成一个新的提交节点,称为合并提交。这

    2024年02月12日
    浏览(28)
  • git fetch, git pull, git merge, git rebase

    背景: 我们发现很多同学习惯性用git pull拉取远端仓库代码, 但是这会带来一个问题,如果有了本地commit再git pull的话,会产生一个merge commit, 这样的merge commit会导致git log分支节点很多,很乱。 首先聊一聊git pull,git merge,git rebase这些常听到的命令吧,初入git的同学一定还

    2024年02月03日
    浏览(39)
  • git rebase和merge区别

    merge和rebase 标题上的两个命令:merge和rebase都是用来合并分支的。 这里不解释rebase命令,以及两个命令的原理,详细解释参考这里。 下面的内容主要说的是两者在实际操作中的区别。 1.1 什么是分支 分支就是便于多人在同一项目中的协作开发。比方说:每个人开发不同的功能

    2024年02月10日
    浏览(27)
  • Idea使用git拉取代码 : (git merge、git rebase)区别

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

    2024年02月16日
    浏览(37)
  • 0065__git fetch, git pull, git merge, git rebase

    git fetch, git pull, git merge, git rebase_git pull和merge_送你一朵小莲花的博客-CSDN博客

    2024年02月09日
    浏览(45)
  • Git:Rebase和Merge之间的区别

    merge的原理是找到这两个分支的祖先commit,在两个分支最新的commit进行三方对比合并 例如下图,共同的祖先commit2,master最新commit6,develop最新commit5, merge会基于2,5,6 这三个commit进行对比: commit6和commit2对比,如果文件的哈希值不一样,同时commit5和commit2对比,发现一样,说

    2024年02月11日
    浏览(28)
  • merge和rebase的区别-Git实操

    实操git管理工具,主要演示如何实现新建分支,提交分支,合并分支到主干,删除分支,管理分支功能。并且详细了解部分功能的区别。git安装与基础使用 顾名思义,在git中,分支指的是从主线上分离出来进行另外的操作,既不影响主线,主线又可以继续干它的事,它可用来

    2023年04月26日
    浏览(27)
  • git rebase和git merge在团队协作开发中的用法

    git rebase 和 git merge 是在日常开发中常用的用于分支合并的命令,也是非常容易误用的两个命令。本文将通过图文的方式去详解二者之间的区别。 git merge git merge 会为本次的合并过程生成一条新的commit,并将该commit添加到目的分支上。通常用于将feature分支的内容向主分支进行

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

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

    2024年03月11日
    浏览(47)
  • 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日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包