Git Merge、Rebase 和 Squash 之间的区别

文章目录

    • Git Merge
    • Git Rebase
    • Git Squash
    • 结论

作为一名开发人员,您可能使用过 Git 和 GitHub,掌握了版本控制的要点。通常通过拉取请求将分支的更改集成到主分支中是一项常见任务。许多人的默认选择是“合并”功能。

然而,版本控制领域提供了具有独特功能的替代命令。Git rebase 和 Git squash 这两种先进技术为您提供了一种将更改同步到目标分支的不同方式。

许多开发人员甚至不知道这些命令是什么,只是使用合并命令。如果您有兴趣学习其他方式,合并是一个不错的选择,您可能会喜欢这篇文章。

在接下来的部分中,我们将深入研究 Merge、Rebase 和 Squash 的命令。值得注意的是,这些命令与解决不同任务的算法并不相似。相反,Merge、Rebase 和 Squash 具有相同的基本目的,但提供了有关如何管理分支的不同视角。每个命令都提供了一个独特的视角,您可以通过它来导航和增强分支管理,从而为您的版本控制方法提供多功能性。

Git Merge

Git 合并可视化

Git Merge 是更新分支最常用的方式。它是最常见的,因为它通常是开发人员在学习 Git 时首先学习的同步命令。他们通常不会在不了解合并的情况下深入研究其他命令,例如 rebase 和 squash,因为它们可能会让人不知所措。

合并基本上会创建一个新的合并提交,并将分支中的更改与该合并提交合并到目标分支。它显示您的个人提交和合并提交。

优点
1、易于理解其工作原理
2、拥有两个分支的提交历史

负面影响
1、历史可能是压倒性的和复杂的
2、用太多合并提交填充分支历史记录的可能性

Git Rebase

Git 变基可视化

Git rebase 是另一个常用命令。顾名思义,Rebase 命令将当前分支的头重新设置为上次提交的目标分支。从而产生了一个非常线性的 git 历史。有些人可能更喜欢这种更线性的 Git 历史记录。

优点
1、生成线性提交历史记录
2、输出更干净的项目历史记录,没有合并提交

负面影响
1、变基会改变提交历史记录,可能会给协作者带来混乱或冲突。
2、解决变基冲突通常比解决合并冲突更困难

Git Squash

Git 南瓜可视化

最后一个命令是 Git Squash。顾名思义,它将提交压缩为单个提交,然后合并到目标分支中。它有点同时具有 Merge 和 Rebase 的功能。它创建了一个合并提交,但也保持了项目历史的线性和干净。
但 Git Squash 的问题是我们会丢失各个提交的详细信息。因此,为了获得更清晰的项目历史记录,有关个人提交的大量上下文都丢失了。

优点
1、生成线性且干净的提交历史记录
2、创建合并提交

负面影响
1、压缩和合并时不太详细的提交
2、跟踪单个提交可能很困难,并且可能会导致调试问题

结论

最后,所有三个命令都执行相同的操作,但风格不同。尽管您现在可能没有使用所有这些命令,但了解它们如何工作对于未来的机会或您的个人项目管理可能会很有用。

长话短说

Merge:创建合并提交,提供有关分支的所有信息
Rebase:将当前分支的头部移动到目标分支的最后一个节点,并产生更线性的git历史记录
Squash:将所有提交合并为一个提交,并创建干净的线性历史记录,但不提供有关提交的尽可能多的信息。

python推荐学习汇总连接:
50个开发必备的Python经典脚本(1-10)

50个开发必备的Python经典脚本(11-20)

50个开发必备的Python经典脚本(21-30)

50个开发必备的Python经典脚本(31-40)

50个开发必备的Python经典脚本(41-50)
————————————————

​最后我们放松一下眼睛
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

论文笔记:信息融合的门控多模态单元(GMU)

整理了GMU(ICLR2017 GATED MULTIMODAL UNITS FOR INFORMATION FUSION)论文的阅读笔记 背景模型实验 论文地址: GMU 背景 多模态指的是同一个现实世界的概念可以用不同的视图或数据类型来描述。比如维基百科有时会用音频的混合来描述一个名人…

项目解决方案:“ZL铁路轨行车辆”实时视频监控系统

目 录 一、建设背景 1.1 政策背景 1.2 现状 二、建设目标 三、建设依据 四、建设原则 4.1经济高效性 4.2系统开放性 4.3系统继承性 4.4系统扩展性 4.5系统经济性 4.6系统安全性 五、系统架构 5.1系统架构图 5.2技术架构 1、DVS 2、中心管理服务…

测试的基本概念

1、什么是需求? 在企业中主要分为两类:用户需求和软件需求 用户需求:甲方的需求,或者终端用户使用产品时必须要完成的任务(比较简略)。 软件需求:或者叫功能需求,该需求会详细描述开…

Qt单个字符判断

1.相关说明 字符的Unicode编码、单个字符的判断 2.界面绘制 3.相关主要代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui;…

数学建模常见算法的通俗理解(更新中)

目录 1.层次分析法(结合某些属性及个人倾向,做出某种决定) 1.1 粗浅理解 1.2 算法过程 1.2.1 构造判断矩阵 1.2.2 计算权重向量 1.2.3 计算最大特征根 1.2.4 计算C.I.值 1.2.5 求解C.R.值 1.2.6 判断一致性 1.2.7 计算总得分 2 神经…

MySQL 多版本并发控制 MVCC

MVCC出现背景 事务的4个隔离级别以及对应的三种异常 读未提交(Read uncommitted) 读已提交(Read committed):脏读 可重复读(Repeatable read):不可重复读 串行化(Se…

pygame学习(三)——支持多种类型的事件

大家好!我是码银🥰 欢迎关注🥰: CSDN:码银 公众号:码银学编程 实时事件循环 为了保证程序的持续刷新、保持打开的状态,我们会创建一个无限循环,通常使用的是while语句,w…

嵌出式学习又一天

关于485通讯 485属于串口通信,属于物理层的,规定为2线,半双工的多点通信标准,它的电气特性不一样,用缆线两端电压差值来表示传递信号,rs485仅仅规定了接收端和发送端的电气特性,没有规定任何数据…

esp32-idf Eclipse Log日志打印demo

Log日志打印demo 1、代码例程 esp32-S2 芯片 / Eclipse软件 开发环境 #include <stdio.h> #include "sdkconfig.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "esp_system.h" #include "esp_…

数据分析求职-知识脑图

今天和大家聊聊数据分析求职常见面试题&#xff0c;这是这个系列的第一篇文章&#xff0c;但是我不想开始就直接罗列题目&#xff0c;因为这样的文章实在太多了&#xff0c;同学们的兴趣程度肯定一般。所以&#xff0c;我想先和大家聊聊在准备面试题时候通常遇到的困扰&#xf…

7.5 MySQL对数据的增改删操作(❤❤❤)

7.5 MySQL对数据的基本操作 1. 提要2. 数据添加2.1 insert语法2.2 insert 子查询2.3 ignore关键字 3. 数据修改3.1 update语句3.2 update表连接 4. 数据删除4.1 delete语句4.2 delete表连接4.3 快速删除数据表全部数据 1. 提要 2. 数据添加 2.1 insert语法 2.2 insert 子查询 …

为什么 macOS 比 Windows 稳定?

在计算机操作系统领域&#xff0c;macOS 和 Windows 分别是苹果公司和微软公司的主打产品。尽管两者都拥有大量的用户群体&#xff0c;但在稳定性和用户体验方面&#xff0c;macOS 常常被认为优于 Windows。那么&#xff0c;为什么 macOS 比 Windows 更稳定呢&#xff1f; 我们…

大创项目推荐 深度学习的智能中文对话问答机器人

文章目录 0 简介1 项目架构2 项目的主要过程2.1 数据清洗、预处理2.2 分桶2.3 训练 3 项目的整体结构4 重要的API4.1 LSTM cells部分&#xff1a;4.2 损失函数&#xff1a;4.3 搭建seq2seq框架&#xff1a;4.4 测试部分&#xff1a;4.5 评价NLP测试效果&#xff1a;4.6 梯度截断…

Mimic-III 数据库挖掘尝试——连续性肾脏替代治疗(CRRT)

Mimic-III 数据库挖掘探索——连续性肾脏替代治疗&#xff08;CRRT&#xff09; 前言 上个月建库成功&#xff0c;至今一个月过去了。 因为没有服务器&#xff0c;在本地电脑反复建了几次&#xff0c;linux系统/windows系统一应俱全[苦涩]。原始库和衍生库都建好了&#xff…

Three.js 学习笔记之模型(学习中1.17更新)

文章目录 模型 几何体 材质模型点模型Points - 用于显示点线模型Line | LineLoop | LineSegments网格模型mesh - 三角形 几何体BufferGeometry缓冲类型几何体BufferGeometry - 没有任何形状的空几何体创建几何体的方式BufferAttribute Types定义顶点法线 geometry.attributes…

MedSegDiff-V2: Diffusion based Medical Image Segmentation with Transformer

MedSegDiff-V2:基于变压器的扩散医学图像分割 摘要 扩散概率模型(Diffusion Probabilistic Model, DPM)最近在计算机视觉领域获得了广泛的应用&#xff0c;这要归功于它的图像生成应用&#xff0c;如Imagen、Latent Diffusion Models和Stable Diffusion&#xff0c;这些应用已…

K8s(二)Pod资源——node调度策略、node亲和性、污点与容忍度

目录 node调度策略nodeName和nodeSelector 指定nodeName 指定nodeSelector node亲和性 node节点亲和性 硬亲和性 软亲和性 污点与容忍度 本文主要介绍了在pod中&#xff0c;与node相关的调度策略&#xff0c;亲和性&#xff0c;污点与容忍度等的内容 node调度策略node…

【AI】RTX2060 6G Ubuntu 22.04.1 LTS (Jammy Jellyfish) 部署Chinese-LLaMA-Alpaca-2

下载源码 cd ~/Downloads/ai git clone --depth1 https://gitee.com/ymcui/Chinese-LLaMA-Alpaca-2 创建venv python3 -m venv venv source venv/bin/activate安装依赖 pip install -r requirements.txt 已安装依赖列表 (venv) yeqiangyeqiang-MS-7B23:~/Downloads/ai/Chi…

Lazada不懂英文能做吗?Lazada国内店铺好做吗?-站斧浏览器

Lazada不懂英文可以做吗&#xff1f; Lazada作为一个国际化的电商平台&#xff0c;为了方便用户来自不同国家和地区的购物需求&#xff0c;提供了多语言支持。对于不懂英文的用户来说&#xff0c;他们同样可以在Lazada上进行购物。 首先&#xff0c;Lazada平台上的界面和商品…