一图看懂git merge和git rebase的区别!!

news2025/2/24 0:14:52

一图看懂git merge和git rebase的区别!!

Git 是一个非常流行的版本控制系统,它帮助开发者管理代码的不同版本。在 Git 中,mergerebase 是两种常用的将不同分支的更改合并到一起的方法,但它们在处理方式和结果上有所不同。

Git Merge(合并)

  1. 定义git merge 是将两个或多个开发历史记录合并在一起的操作。
  2. 过程:当你执行 git merge 命令时,Git 会在两个分支之间创建一个新的“合并提交”(merge commit),这个提交会同时指向两个分支的历史点。
  3. 优点
    • 保留了完整的历史记录,可以清晰地看到分支的合并点。
    • 合并操作是不可逆的,不会改变项目的历史。
  4. 缺点
    • 可能会产生多余的合并提交,使得历史记录变得复杂。
    • 合并冲突可能更难以解决,因为它们被合并到了一个单独的提交中。

Git Rebase(变基)

  1. 定义git rebase 是将一系列提交从一个分支上摘下来,然后再应用到另一个分支上的操作。
  2. 过程:执行 git rebase 时,Git 会将当前分支上的提交暂存起来,然后将当前分支指向目标分支的顶部,之后将暂存的提交依次应用。
  3. 优点
    • 可以创建一个更干净、线性的提交历史。
    • 减少了合并提交的数量,使得历史记录更加清晰。
  4. 缺点
    • 变基会改变历史记录,如果不正确使用,可能会导致问题。
    • 变基操作是可逆的,但如果在变基后与其他人共享了分支,可能会引起混乱。

一图总结

A---B---C---D  Topic1 (初始状态)
      \
        E---F---G  Topic2 (初始状态)

使用 git merge Topic2
A---B---C---D---H  Topic1 (合并后的Topic1)
     \            (H 是合并提交)
      E---F---G  Topic2

使用 git rebase Topic2 到 Topic1
A---B---C---D---E'---F'---G'  Topic1 (变基后的Topic1)
                          /
                         E---F---G  Topic2 (E', F', G' 是重新应用的提交)

在上图中,Topic1Topic2 是两个分支,ADTopic1 的提交,EGTopic2 的提交。使用 git merge 会创建一个新的合并提交 H,而使用 git rebase 会将 EFG 重新应用到 D 的顶部,生成 E'F'G'

选择使用 merge 还是 rebase 通常取决于团队的工作流程和个人偏好。在公共分支上,通常推荐使用 merge 以保持历史的完整性,而在特性分支或个人分支上,使用 rebase 可以保持历史的清洁和线性。

综上总结

在这里插入图片描述

  • git merge和git rebase都具有合并分支的功能,
    但两者又有不同:
    rebase: 变基: 把一个分支的更改移动到另一个分支上,通常用于保持提交历史的线性和干净
    merge: 合并: 把一个分支的更改合并到另一个分支,合并后的提交会保留原始分支的提交历史
    rebase: 解决完冲突后不会产生额外的commit
    merge: 解决完冲突后会产生一个commit
    图中非常形象的展示了二者的不同,

  • 所以rebase是把main的commit记录给删掉了吗?

    • 回答:不是,变基是以目标分支的commit为基础合并,从而忽略main分支的提交记录。

仁者见仁,智者见智,个人推荐使用merge

  • git rebase 只适合在自己的branch用,不然一直会产生branch垃圾(可以删除解决)
  • 而且如果是团队开发,rebase对团队成员能力要求较高
  • rebase需要提交要遵守黄金法则,要慎重
  • 黄金法则; Never use rebase on public branches,永远不能在一个共享的分支上进行Git rebase操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1670239.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第四届微调——炼丹

学习地址:Tutorial/xtuner/README.md at main InternLM/Tutorial GitHub 笔记 微调是一种在已有的预训练模型基础上,通过使用新的数据对模型进行进一步优化和调整的技术手段。它的目的是使模型能够更好地适应特定的应用场景和任务需求,进一…

融入新科技的SLM27211系列 120V, 3A/4.5A高低边高频门极驱动器兼容UCC27284,MAX15013A

SLM27211是高低边高频门极驱动器,集成了120V的自举二极管,支持高频大电流的输出,可在8V~17V的宽电压范围内驱动MOSFET,独立的高、低边驱动以方便控制,可用于半桥、全桥、双管正激和有源钳位正激等拓。有极好的开通、关…

26 Debian如何配置SSH密钥对验证(支持无密码安全登录)

作者:网络傅老师 特别提示:未经作者允许,不得转载任何内容。违者必究! Debian如何配置SSH密钥对验证 《傅老师Debian小知识库系列之26》——原创 前言 傅老师Debian小知识库特点: 1、最小化拆解Debian实用技能&…

【什么是范数】L1、L2范数介绍

一、 什么是范数 范数(Norm)是数学中用于衡量向量大小(或距离)的一种概念。在几何和代数中,范数可以提供一个向量长度或大小的量度。更正式地说,范数是一个函数,它将向量的集合映射到非负实数,满足以下性质…

【WP网站开发新的订单查询页面,根据付费单号未登录用户可查询资源下载地址】RiProV2主题美化WordPress美化订单查询页面,二次开发DIY的功能页面

【WP网站开发新的订单查询页面,根据付费单号未登录用户可查询资源下载地址】RiProV2主题美化WordPress美化订单查询页面,二次开发DIY的功能页面 背景: 很多资源站是使用,WordPress搭建的PHP网站,一般会额外使用一个主题,比如RiProV2,Ritheme,日主题;本文以 RiProV2主…

物联网实战--平台篇之(七)应用界面设计

目录 一、米家APP分析 二、应用展示 三、应用列表 四、新建应用 五、重命名应用 本项目的交流QQ群:701889554 物联网实战--入门篇https://blog.csdn.net/ypp240124016/category_12609773.html 物联网实战--驱动篇https://blog.csdn.net/ypp240124016/category_12631333.…

jar包启动报错no main manifest attribute

我是这里加了这个跳过,把这个注释掉即可。

SSL证书助力工业和信息化领域数据安全,确保传输数据的保密性、完整性

工业和信息化领域数据包括工业数据、电信数据和无线电数据等,是国家重要基础性战略资源,随着工业领域数字化、网络化、智能化加速提质升级,数据泄露、勒索攻击等网络风险日益增加,由此加强工业和信息化领域数据安全管理&#xff0…

RiProV2主题美化【支付页弹窗增加价格提示语】Ritheme主题美化RiProV2-网站WordPress美化二开

背景: 楼主的网站是用WordPress搭建的,并使用了正版主题RiProV2,但RiProV2在支付弹窗页没有价格,只在文章详情页会展示价格。本文就是美化这个支付弹窗,在支付弹窗页把价格字段加上,如下图所示: 美化前: 美化后 美化步骤: (1)定位到文件:/www/wwwroot/www.uu2i…

【牛客】SQL211 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary

1、描述 有一个薪水表salaries简况如下: 请你获取薪水第二多的员工的emp_no以及其对应的薪水salary, 若有多个员工的薪水为第二多的薪水,则将对应的员工的emp_no和salary全部输出,并按emp_no升序排序。 2、题目建表 drop table …

考研数学|24像张宇那样的题?李林880和李永乐660不够用了?

以前的卷子就不说了,就说说最近的24年的考研数学题 24年考研数学真题评价: 首先数学二在计算量上超过了数学三,尤其是在高等数学的选择题部分,这使得数学二的难度可能略高于数学三,尽管两者之间并没有本质的差异。与…

附录2 创建flask镜像

目录 1 python镜像 2 安装flask 3 把项目文件扔进去 3.1 创建git仓库 3.2 上传文件 3.3 获取git链接 3.4 在容器中git clone 4 启动flask服务 5 将容器保存为镜像 6 映射端口运行镜像 7 遇到的问题 8 Dockerfile创建镜像 1 python镜像 首先找一下fla…

怎么用电脑接收手机文件 用备忘录传输更舒服

在这个数字化时代,手机已经成为我们随身携带的“百宝箱”,里面装满了各种重要的文件、资料和信息。然而,有时我们需要在电脑上处理这些文件,比如编辑文档、制作PPT或是查看照片。那么,如何在电脑与手机之间实现文件的顺…

Leetcode-有效的括号

20. 有效的括号 - 力扣(LeetCode)https://leetcode.cn/problems/valid-parentheses/ 题目 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足&…

毕业论文降重方法有哪些?aigc检测率怎样降下去?不墨迹!

快速论文降重方法有哪些?aigc检测率怎样降下去?网上有各种方法,但是都太墨迹。本身毕业论文对于很多同学来说就是第一次写,论文查重降重也是第一次经历,那些高超的技巧很难掌握住,而且很多同学的重复率又太…

ctfshow 源码审计 web301--web305

web301 在checklogin.php 发现了 $sql"select sds_password from sds_user where sds_username".$username." order by id limit 1;";在联合查询并不存在的数据时,联合查询就会构造一个虚拟的数据就相当于构造了一个虚拟账户,可以…

【2024年5月备考新增】】 考前篇(1)《官方平台 - 考生模拟练习平台操作指南》

1 登录 登录中国计算机技术职业资格网(https://www.ruankao.org.cn),点击服务园地的【模拟练习】。 温馨提示:实名认证通过且注册成功的考生方可登录模拟练习。 2 下载模拟作答系统 温馨提示: 点击“下载”按钮,下载对应的模拟作答系统。未报名成功的考生不允许下载…

element table 合并单元格(:span-method)

element table 需要最后一列单元格进行单一到左 需要一个地方对整个表格做操作&#xff0c;没有UI设计&#xff0c;需要自行脑补设计 把最后一列全部合并&#xff0c;做成一列输出就好&#xff1b; 效果 核心代码 视图 <el-table :data"loseDataList" style&quo…

​​​【收录 Hello 算法】5.3 双向队列

目录 5.3 双向队列 5.3.1 双向队列常用操作 5.3.2 双向队列实现 1. 基于双向链表的实现 2. 基于数组的实现 5.3.3 双向队列应用 5.3 双向队列 在队列中&#xff0c;我们仅能删除头部元素或在尾部添加元素。如图 5-7 所示&#xff0c;双向队列&#xff08…

阿贝云免费虚拟主机和免费云服务器评测

阿贝云是一家知名的云服务提供商&#xff0c;提供免费虚拟主机和免费云服务器服务。他们的服务质量一直备受好评&#xff0c;受到了广大用户的青睐。使用阿贝云的免费虚拟主机和免费云服务器&#xff0c;用户可以轻松地搭建自己的网站和应用&#xff0c;享受稳定的服务和优质的…