git 三种合并方式(rebase / merge / squash)

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

问题背景

在使用 Git (分布式版本控制系统),往往不会直接在主分支上面直接开发,而是新建一个分支进行开发。

那么当我们在新分支上面完成一个功能时,便需要合并到主分支。

三种合并

  • merge
  • rebase and merge
  • squash and merge

初始化

squash and merge,git

图 1

图1,初始两个分支的状态,现基于此对合并(merge)和变基(rebase)操作讲解。

存在两个分支,当前状态为:

  • master : A -> B -> C -> D -> E
  • feature : A -> B -> C -> F -> H

merge

squash and merge,git

图 2

图 2 ,当 master 分支与 feature 分支都存在新的 commit 时,那么在 master 分支使用 git merge feature 会将 master 与 Feature 的最新 commit (E / H) 打包,在 master 分支提交为一个新的 commit (G)。

Rebase

squash and merge,git

图 3

图 3 ,当在 feature 分支使用 git rebase master ,会将 feature 分支的变到 master 分支上。

注意:新 commit (F / H) 对比与旧提交,如图3 黄色的部分,其 sha 值不一致,说明 git rebase 是创建了新的提交。 squash and merge,git

图 4

图4,当在 master 分支使用 git rebase feature ,会将 master 分支的变到 feature 分支上。

Rebase and merge

squash and merge,git

图 5

图 5 是由图 3 ,进行 merge 操作实现的,这是 merge 操作的另一种情况 :当 master 相对于 feature 没有新的提交时,在 master 分支上使用 git merge feature 会直接将 master 分支指向 feature 分支。

Squash and merge

squash and merge,git

图 6

squash 顾名思义是压缩,图 6 将 新分支的 commit (F / H) 进行打包压缩在与 master 分支进行 merge 操作。

文章来源地址https://www.toymoban.com/news/detail-838627.html

优缺点

操作 优点 缺点
merge 简单直观
保留完整历史
合并提交冗余
分支历史不够整洁
rebase 整洁的分支历史
清晰的提交历史
改变提交历史
容易产生合并冲突
squash 清晰的提交历史 丢失提交信息
破坏历史信息

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

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

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

相关文章

  • Git进阶之代码回滚、合并代码、从A分支选择N次提交,合并到B分支【revert、merge、rebase、cherry-pick】

    B站视频地址: https://www.bilibili.com/video/BV1KX4y1a7N9 Git学习文档:https://d9bp4nr5ye.feishu.cn/wiki/PeDPw3mm3iFA36k9td9cVeignsZ 在很长一段时间里,我对Git的操作只限于:提交代码,拉取代码,合并代码。 虽然上面这些操作在日常工作中也足够了,但不会点高级知识不利于装X,今天我们来学

    2024年02月08日
    浏览(63)
  • git——合并分支commit记录 squash提交

         在公司和别人协同合作时,作为开发需要向架构或者负责人提交mr以合并代码,为了提高review效率,有些负责人会要求一个mr仅保留一条commit记录方便代码比对review的观看,但是开发常常是很多需求和bug混合着写,不可能每个分支都暂存一下去其他分支查看吧,因此总会

    2024年02月14日
    浏览(38)
  • 详解Git合并冲突——问题重现、原因及解决 “Automatic merge failed; fix conflicts and then commit the result.“

    最后更新日期:2022/10/6 在Git中使用 git merge 命令合并两个分支的时候,有可能产生这种情况: 这就是发生了 冲突 (conflict)。 为什么会有冲突?要如何解决呢?请看下文介绍。 简单来说,就是两个分支都对同一个文件做了更改,当这两个分支合并的时候,Git不知道要采用哪

    2024年02月14日
    浏览(52)
  • 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日
    浏览(26)
  • git rebase和merge区别

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

    2024年02月10日
    浏览(27)
  • git merge 和git rebase的区别

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

    2024年02月12日
    浏览(28)
  • Git rebase和merge区别详解

    此文在阅读前需要有一定的git命令基础,若基础尚未掌握,建议先阅读这篇文章Git命令播报详版 在 Git 中整合来自不同分支的修改主要有两种方法: merge 以及 rebase (变基),本文主要讲解 rebase 用法。 当开发任务分叉到两个不同分支,又各自提交了更新。 整合分支最容易的方

    2024年02月14日
    浏览(37)
  • Git:git merge和git rebase的区别

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

    2024年02月16日
    浏览(25)
  • 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)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包