Git:Rebase和Merge之间的区别

news2024/9/22 0:56:15

一、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

重新基于一个分支上进行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

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

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

相关文章

多模态信息融合研究

1、主要研究方向 多模态学习可以划分为以下五个研究方向: 多模态表示学习 Multimodal Representation:主要研究如何将多模态的数据所蕴含的语义信息通过embedding的方式实现向量化,便于后续的计算; 模态转化 Translation&#…

BN层的参数γ、β以及前、后向传播

γ、β 存在问题 在对输入做完标准化后,可能会出现以下情况:网络中间某一层学习到特征数据本身分布在sigmoid激活函数的两侧,标准化会强制把输入的均值限制为0、标准差限制为1,这样就把数据变换成分布在sigmoid激活函数的中间部…

补充python部分细节性知识点

未完,持续更新中。。。 一、数据类型 1.浮点型:float 使用浮点型的变量相加之后可能会存在值不准确的问题,可以考虑引入decimal模块,decimal其实也是一种数据类型,是十进制的数据类型,实际上就是将flaot类型进行一次…

Java安全——语言安全结构

Java安全 Java语言安全 Java语言安全结构 面向对象的一个设计突出点就是允许数据的隐藏和数据的封装。数据封装确定了数据的访问只能通过公共接口访问操作。而一般的操作是直接管理对象的数据元素。对于开发大型的,健壮性的面向对象的系统的重要性。 java实体的…

Linux下std::ifstream成员函数对应系统调用验证

最近在分析离线数据使用时的bug&#xff0c;发现代码中对std::ifstream成员函数使用存在疑问&#xff0c;所以就写了个简单测试程序来分析std::ifstream成员函数对应那些系统调用。 目录 1.gcount 2.seekg和tellg 3.read 代码如下&#xff1a; test.cpp #include <ios…

python中如何使用正则表达式提取数据

这篇文章主要介绍了python中如何使用正则表达式提取数据问题。具有很好的参考价值&#xff0c;希望对大家有所帮助。如有错误或未考虑完全的地方&#xff0c;望不吝赐教。 正则表达式是一个特殊的字符序列&#xff0c;它能帮助你方便的检查一个字符串是否与某种模式匹配。 re…

mac m4a转mp3怎么转?

mac m4a转mp3怎么操作&#xff1f;小编之前编写了在windows系统电脑上进行音频格式转换的教程和方法&#xff0c;帮助了不少的小伙伴。最近有一个粉丝朋友向我求助&#xff0c;因为自己使用的是苹果mac电脑&#xff0c;有没有什么方法可以在上面将m4a音频格式转换成mp3。因为使…

从加密转型AI:追求可持续性发展还是盲目跟风?

很多批评者曾说&#xff0c;加密行业充斥着流行语&#xff0c;总是在追逐下一个新趋势&#xff0c;甚至会因为过度追求短期利润而忽视了可持续性发展的重要性。在大多数情况下&#xff0c;他们似乎是对的。 上周末&#xff0c;国内最早也是最大的比特币论坛巴比特宣布转型AI赛道…

ClickHouse单节点安装配置

创建目录 mkdir /opt/clickhouse 将文件复制到目录 cp /opt/clickhouse-*.rpm /opt/module/clickhouse/ 在/clickhouse目录下解压安装文件 rpm2cpio clickhouse-client-21.7.3.14-2.noarch.rpm | cpio -idmv rpm2cpio clickhouse-common-static-21.7.3.14-2.x86_64.rpm | …

OpenCV学习笔记 | 边缘检测Canny算法复现 | Python

摘要 OpenCV中的边缘检测是指在图像中检测出明显的边缘轮廓线&#xff0c;可以通过计算图像中每个像素的梯度来实现。Canny算法是一种常用的边缘检测算法&#xff0c;它主要通过连续的操作来寻找边缘&#xff0c;包括对图像去噪、计算图像梯度、非极大值抑制和双阈值处理等步骤…

第36节:cesium 下雨效果(含源码+视频)

结果示例: 完整源码: <template><div class="viewer"><vc-viewer @ready="ready" :logo="false"><!

[ JVM ] 常用参数 优化参考

基础概念回顾 JDK、JRE、JVM的关系&#xff08;JDK>JRE>JVM&#xff09; JDK JRE 开发工具 、JRE JVM 类库&#xff0c;具体关系如下图&#xff1a; JDK&#xff08;Java Development Kit&#xff09; 用于开发 Java 应用程序的软件开发工具集合&#xff0c;包括 了 …

【接口mock工具】推荐一个好用的api接口关联,接口mock,文档管理的工具-yapi

【接口mock工具】推荐一个好用的api接口关联&#xff0c;接口mock&#xff0c;文档管理的工具-yapi 能满足的功能 &#xff1a; 1. 接口mock 2. 接口文档生成 3. 接口自动化测试 4. 接口自动化测试结果可以发送到你的企业微信上面 5. 接口管理可以按照分组&#xff0c;分项…

python数据分析之利用多种机器学习方法实现文本分类、情感预测

大家好&#xff0c;我是带我去滑雪&#xff01; 文本分类是一种机器学习和自然语言处理&#xff08;NLP&#xff09;任务&#xff0c;旨在将给定的文本数据分配到预定义的类别或标签中。其目标是为文本数据提供自动分类和标注&#xff0c;使得可以根据其内容或主题进行组织、排…

初见RNN(第七次组会)

初见RNN&#xff08;第七次组会&#xff09; 序列模型、马尔可夫假设循环神经网络 序列模型、马尔可夫假设 循环神经网络

[rocketmq] 浅谈结构

rocketmq 结构 NameServer &#xff1a;几乎是无状态节点&#xff0c;可横向扩展&#xff0c;节点之间无消息同步&#xff0c;主要负责对源数据的管理&#xff0c;包括对于Topic和路由信息的管理。 每个 Broker 在启动的时候会到 NameServer 注册&#xff0c;Producer 在发送消…

【UEFI实战】UEFI图形显示(从像素到字符)

GraphicsConsoleDxe 在【UEFI实战】UEFI图形显示&#xff08;显示驱动&#xff09;中已经介绍了如何使用显卡驱动安装的GOP来进行像素级别的显示&#xff0c;本文介绍的内容是对像素的包装&#xff0c;最终变成普通字符的输出。 模块简述 本模块将原本的GOP包装成了字符输出…

MySQL数据库——主从复制优化及读写分离

目录 主从复制优化主服务器配置优化redo log&#xff08;事务日志&#xff09;的刷盘策略从服务器配置优化 搭建MySQL读写分离 主从复制优化 主服务器配置优化 vim /etc/my.cnf expire_logs_days7 #设置二进制日志文件过期时间&#xff0c;默认值为0&#xff0c;表示logs不…

Vue2生命周期

Vue2生命周期 1、概念2、生命周期过程2.1 流程图示2.2 三阶段 3、钩子函数详解3.1 beforeCreate() 创建前3.2 created()创建后3.3 beforeMount() 挂载前3.4 mounted()挂载完成3.5 beforeUpdate() 更新前3.6 updated() 更新后3.7 beforeDestroy() 销毁前3.8 destroyed() 销毁完成…

在群晖上安装运行Airflow

本文是应网友 &#xff1a; 要求折腾的&#xff1b; 什么是 Airflow &#xff1f; Apache Airflow 是一个开源平台&#xff0c;用于开发、调度和监控面向批处理的工作流。Airflow 的可扩展 Python 框架使您能够构建与几乎任何技术连接的工作流。Web 界面有助于管理工作流程的状…