Git:git merge和git rebase的区别

news2024/10/5 15:34:35

分支合并

git merge是用来合并两个分支的。比如:将 b 分支合并到当前分支。同样git rebase b,也是把 b 分支合并到当前分支。他们的 「原理」如下:

假设你现在基于远程分支"origin",创建一个叫"mywork"的分支。

$ git checkout -b mywork origin

假设远程分支"origin"已经有了 2 个提交,如下。

现在我们在这个分支做一些修改,然后生成两个提交(commit)。

$ vi file.txt
$ git commit
$ vi otherfile.txt
$ git commit
...

但是与此同时,有些人也在"origin"分支上做了一些修改并且做了提交了。

这就意味着"origin"和"mywork"这两个分支各自"前进"了,它们之间"分叉"了。

在这里,你可以用"pull"命令把"origin"分支上的修改拉下来并且和你的修改合并;结果看起来就像一个新的"合并的提交"(merge commit):

但是,如果你想让"mywork"分支历史看起来像没有经过任何合并一样,你也许可以用git rebase:

$ git checkout mywork

$ git rebase origin

这些命令会把你的"mywork"分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把"mywork"分支更新 为最新的"origin"分支,最后把保存的这些补丁应用到"mywork"分支上。

当mywork分支更新之后,它会指向这些新创建的提交(commit),而那些老的提交会被丢弃。如果运行垃圾收集命令(pruning garbage collection), 这些被丢弃的提交就会删除。(请查看 git gc)
 

解决冲突

        在 rebase 的过程中,也许会出现冲突(conflict)。在这种情况,Git 会停止 rebase 并会让你去解决 冲突;在解决完冲突后,用git-add命令去更新这些内容的索引(index),然后,你无需执行git-commit,只要执行:

$  git rebase --continue

这样 git 会继续应用(apply)余下的补丁。

在任何时候,你可以用–abort参数来终止 rebase 的行动,并且"mywork" 分支会回到 rebase 开始前的状态。

$  git rebase --abort

git rebase和git merge的区别

        用合并( merge )和用 rebase 所产生的历史的区别:

此时,

当我们使用Git log来参看 commit 时,其 commit 的顺序也有所不同。

假设 C3 提交于9:00AM,C5 提交于 10:00AM,C4 提交于 11:00AM,C6 提交于 12:00AM。

  • 对于使用 git merge 来合并所看到的 commit 的顺序(从新到旧)是:C7、C6、C4、C5、C3、C2、C1。
  • 对于使用 git rebase 来合并所看到的 commit 的顺序(从新到旧)是:C7、C6‘、C5’、C4、C3、C2、C1。

因为C6’提交只是 C6 提交的克隆,C5’ 提交只是 C5 提交的克隆。

从用户的角度看使用 git rebase 来合并后所看到的commit的顺序(从新到旧)是:C7、C6、C5、C4、C3、C2、C1。

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

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

相关文章

【爬虫】对某某贴吧主页的爬虫分析+源码

1. 网站分析 想要的内容有标题、时间和帖子跳转链接 查看网站源代码,发现想要的内容就在里面,那就好办了,直接上正则,当然beautifulsoup也不是不可以 2. Python源码 import requests import re from prettytable import PrettyTa…

“生鲜蔬”APP的设计与实现

1.引言 在这个科技与网络齐头并进的时代,外卖服务正在飞速发展,人们对外卖APP系统功能需求越来越多,开发APP的人员对自己的要求也要越来越高,要从所做APP外卖系统所实现的功能和用户的需求来对系统进行设计,还需要与当…

基于SpringBoot+vue的人职匹配推荐系统设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

CC1310 CC1310F128RSMR 超低功耗SUB-1GHz 无线 MCU芯片

1 器件概述 1 1 特性 • 微控制器 – 性能强大的 Arm Cortex -M3 处理器 – EEMBCCoreMark评分:142 – EEMBC ULPBench™评分:158 – 时钟速率最高可达 48MHz – 32KB、64KB 和 128KB 系统内可编程闪存 – 8KB 缓存静态随机存取存储器 (SRAM) &#xff…

农业副业产品求购供应发布市场行情VIP会员公众号小程序开源版开发

农业副业产品求购供应发布市场行情VIP会员公众号小程序开源版开发 后台一键同步全国近200家农产品批发市场商品包括,蔬菜、水果、水产、粮油和农副产品等的价格。 前端VIP权益功能,开通VIP会员后,可以开启VIP会员标识。可无限制查看全国市场…

Scrapy框架之Mongo安装和与关系型数据库比较

目录 Windows安装与启动MongoDB 下载 启动MongoDB 通过命令启动 脚本 快速学习方法 与关系型数据库比较 什么是BSON Windows安装与启动MongoDB 下载 企业版-收费 社区版-免费 下载Mongodb Download MongoDB Community Server | MongoDB 选择版本 稳定版5.0.9 选择平台…

前端工程化 | vue3+ts+jsx+sass+eslint+prettier 配置化全流程

起因: 前端开发是一个工程化的流程。 包括持续集成、持续部署。 我认为集成 的第一方面就是开发,在前端项目开发中,需要保证代码格式规范的统一、代码质量、提交的规划。而这些要求需要通过各种插件来保证规范化和流程化开发。 如何配置这…

大数据的金融数据读取及分析(二)

一、注册和获取token 参考大数据的金融数据读取及分析(一)大数据的金融数据读取及分析(-)_石工记的博客-CSDN博客 二、获取股市信息 需注意的是,利用tushare接口获取部分信息时对积分有不同的要求,积分不…

后室主题 Game Jam

在后室主题 Game Jam 中探索无尽的深渊! 向所有富有冒险精神的游戏开发者和创作者发出召集令!准备好潜入未知领域,将令人毛骨悚然的后室之谜变为现实吗?加入我们,参加与 Game Maker 合作举办的令人振奋的游戏竞赛吧&am…

【C语言】GNU make 和 Makefile :构建工具与构建描述文件的力量

本文将详细介绍make和Makefile,它们是软件开发中常用的构建工具和构建描述文件。本文将探讨make的作用、原理和用法,以及Makefile的结构、语法和常见用法。通过了解这些工具,开发者可以更高效地管理和构建复杂的软件项目。 引言一、make1.1 m…

Java8新特性详解

陈老老老板 说明:新的专栏,本专栏专门讲Java8新特性,把平时遇到的问题与Java8的写法进行总结,需要注意的地方都标红了,一起加油。 本文是介绍Java8新特性与常用方法(此篇只做大体介绍了解,之后会…

使用OpenCV工具包实现人脸检测与人脸识别,包括传统视觉和深度学习方法(最全整理!)

使用OpenCV工具包实现人脸检测与人脸识别(最全整理!) OpenCV实现人脸检测OpenCV人脸检测方法基于Haar特征的人脸检测Haar级联检测器预训练模型下载Haar 级联分类器OpenCV-Python实现 基于深度学习的人脸检测传统视觉方法与深度学习方法对比 O…

three.js 最小环境搭建

完整目录: 1、html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><st…

专利优先权应在什么时候提出

专利优先权要求应当在3个月内提交第一次提出的专利申请文件的副本&#xff1b;未提出书面声明或者逾期未提交专利申请文件副本的&#xff0c;视为未要求优先权。 申请人就相同主题的发明或实用新型在外国第一次提出专利申请之日起十二个月内&#xff0c;或者就相同主题的外观设…

【STM32智能车】智能车专题知识补充

【STM32智能车】智能车专题知识补充 智能车专题智能车的定义和发展历程。智能车的特点和优势。智能车的关键技术智能车的应用场景&#xff0c;如出租车、物流配送、公共交通等。智能车在环境保护、交通安全、经济发展等方面的作用。智能车发展面临的挑战和机遇 智能车专题 本专…

使用 Elasticsearch 1

了解如何创建索引&#xff0c;添加&#xff0c;删除&#xff0c;更新文档 参考文档 开始使用 Elasticsearch 1 本文用到Elasticsearch和Kibana 可以看之前的两篇先安装好 Elasticsearch 安装 Kibana安装 Elasticsearch 里的接口都是通过 REST 接口来实现的。 GET 读取数…

Scrapy框架之MongoDB通过配置文件管理参数--Linux安装MongoDB--图形管理工具

目录 MongoDB通过配置文件 问题 解决方案 步骤 提示 Linux安装MongoDB 环境 下载依赖与安装包 解压安装 MongoDB GUI管理工具 独立软件GUI软件 Robo 3T使用 VSCode集成GUI插件 MongoDB通过配置文件 问题 启动MongoDB时&#xff0c;编写参数太麻烦 解决方案 通过配…

【PCL】(三)读写PCD文件

文章目录 &#xff08;三&#xff09;读写PCD文件写读 &#xff08;三&#xff09;读写PCD文件 写 首先&#xff0c;创建一个名为pcd_write.cpp的文件&#xff0c;并在其中写入以下代码&#xff1a; #include <iostream> #include <pcl/io/pcd_io.h> #include &…

【项目实战】大文件断点续传,搞起

今天给大家分享的又是一篇实战文章&#xff0c;也是最近私活里遇到的&#xff0c;万能的互联网给了我办法&#xff0c;分享一下。 背景 最近接到一个新的需求&#xff0c;需要上传2G左右的视频文件&#xff0c;用测试环境的OSS试了一下&#xff0c;上传需要十几分钟&#xff…

Session

什么是Session&#xff1f; 服务器会给每个用户&#xff08;浏览器&#xff09;创建一个Session对象。一个Session独占一个浏览器&#xff0c;只要浏览器没有关闭&#xff0c;Session就一直存在。用户登陆后&#xff0c;整个网站都可以访问&#xff01;&#xff08;保存用户的…