Git常用命令rebase(图文详解,彻底理解)

Git常用命令rebase(图文详解,彻底理解)

  • 先看一个实际场景
  • git rebase 过程中如何解决冲突
  • git rebase 的优缺点

先看一个实际场景

首先构造两个分支 masterfeature分支,其中 feature 分支是基于 master 分支拉的新分支,如下图,每一个节点表示一个commit版本号,假如我们是从 master 分支的 E 版本节点拉的新分支,在feature分支上有三次新的提交,分别是A、B、C。在master分支上有两次新的提交,分别是F、G

          A---B---C   // feature 分支/D---E---F---G     // master 分支

此时执行以下代码,变基后的版本节点会发生如下变化

	git checkout featuregit rebase master# 以上操作等价于git rebase master feature
                  A'--B'--C'   // feature 分支/D---E---F---G            // master 分支
  • 官方解释:

    当执行rebase操作时,git会从两个分支的共同祖先节点开始提取待变基分支上的修改,然后将待变基分支指向基分支的最新提交,最后将刚才提取的修改应用到基分支的最新提交的后面。

  • 结合以上例子来看

    当在feature分支上执行git rebase master时,git会从masterfeature的共同祖先E版本开始提取feature分支上的修改,也就是A、B、C三次提交,先提取到。然后将feature分支指向master分支的最新提交上,也就是G。最后把提取的A、B、C三次提交变基到G版本。这里需要注意,实际是会依次拿GA、B、C内容分别比较,处理冲突后生成新的A'、B'、C'。注意,这里新的A'、B'、C'版本号和之前的A、B、C已经不一样了,是我们处理冲突后的新内容,feature指针最后也是指向C' 版本号。

  • 通俗的理解

    git rebase 操作会变更我们刚开始拉取分支的基底代码版本,我们拉取新分支的原分支上有新的改动,此操作之后会把原来分支新的改动变基到我们新分支新的改动之前,注意,变更之后,新分支新的提交版本号也都会更改,生成相应新的版本号。

git rebase 过程中如何解决冲突

  1. 解决冲突后保存
  2. 执行git add . 命令
    3.执行 git rebase --continue 命令 // 注意add之后不是使用commit命令

如果 rebase 过程中,想中途退出,恢复 rebase 前的代码则可以用以下命令

git rebase --abort

git rebase 的优缺点

  • 优点:提交记录会比较简洁
  • 缺点:无法区分当前分支最早是从哪个分支拉出来的,如果用在主分支上,其他开发人员想看主分支的历史,却无法查看原来的历史了,因为历史已经被篡改了。出现问题不易追溯。

注意:因为有以上缺点,有些公司其实会禁用rebase,不管是拉取代码还是合并代码,统一都使用merge,虽然会多出一条无意义的merge记录,但能非常清楚地知道主分支的代码合并记录以及合代码的时间顺序。

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

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

相关文章

使用 Docker 部署 instantbox 轻量级 Linux 系统

1)instantbox 介绍 GitHub:https://github.com/instantbox/instantbox instantbox 是一款非常实用的项目,它能够让你在几秒内启动一个主流的 Linux 系统,随起随用,支持 Ubuntu,CentOS, Arch Li…

RocketMQ 06 消息存储机制

RocketMQ 06 消息存储机制 消息存储 image-20200228140910086.png 磁盘存储速度问题 省去DB层提高性能 RocketMQ 使用文件系统持久化消息。性能要比使用DB产品要高。 M.2 NVME协议磁盘存储 文件写入速度 顺序读写:3G左右 随机读写2G 数据零拷贝技术 很多使…

css面试题之flex实现麻将三饼布局

麻将应该很多人都熟悉吧,那如何通过flex布局尽可能使用少的节点来实现“三饼(也有人管它叫桶)”的效果呢?(ps:麻将牌效果如下) 实现步骤: 1.首先先通过flex修饰外层容器,内部的三个…

高风险IP的来源及其影响

随着互联网的发展,网络安全问题越来越引人关注。其中,高风险IP的来源成为了研究和讨论的焦点之一。高风险IP指的是那些经常涉及到网络攻击、恶意软件传播以及其他不良行为的IP地址。它们的存在不仅对个人和组织的网络安全构成威胁,还可能给整…

独家原创 | Matlab实现INFO-BiTCN-BiGRU-Attention多输入单输出回归预测

独家原创 | Matlab实现INFO-BiTCN-BiGRU-Attention多输入单输出回归预测 目录 独家原创 | Matlab实现INFO-BiTCN-BiGRU-Attention多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现INFO-BiTCN-BiGRU-Attention向量加权算法优化双向时间卷积…

hive: 自定义函数的用法

一、依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0…

企业中台技术架构解决方案(中台建设指南Word原件2024)

通过中台建设实现企业能力复用&#xff0c;包括能力整合、业务创新、业务和数据闭环、组织模式演进等。 数字能力整合 企业的数字能力一般包括数字化营销、数字化产品、数字化供应链、数字化生产、数字化运营等。企业的数字化能力的充分利用&#xff0c;从而达到可持续发展。数…

爬虫 | 垃圾处理设施数据的获取与保存

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本项目通过发送网络请求&#xff08;requests&#xff09;&#xff0c;从指定的 URL 获取垃圾处理设施的相关数据&#xff0c;并将数据保存到 CSV 文件中&#xff0c;以供后续分析和利用。 目录 一、项目结构 二、详细说明 三…

面试官:请实现一个接口错误重试功能

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热爱技术和分享&#xff0c;欢迎大家交流&#xff0c;一起学习进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 目录 背景 什么是接口错误重试&#xff1f; 明确关键点 接口重试功能的实现 A…

防御式编程

前言 编写高质量代码有什么用&#xff1f; 作为一名程序猿&#xff0c;或软件开发工程师&#xff0c;或技术工人&#xff0c;首要任务就是编写好代码(编写高质量代码)。那么编写好代码有什么用呢&#xff1f;靠编写好代码可以维持你的工作&#xff08;基础&#xff09;&#…

有点意思!腾讯 ARC Lab 最新发布的MiraData数据集,用于长视频生成,从这些方面做了clip分层描述……

最近小编网上冲浪时&#xff0c;被腾讯 PCG ARC Lab 新开源的文本-视频数据集——MiraData 吸引了目光。 这个数据集有多新&#xff1f;Readme在一天前刚更新完的那种&#xff0c;而且数据集有一大特点&#xff0c;是专门为长视频生成任务设计的大规模视频数据集&#xff0c;不…

2024年生物医学与食品安全国际会议 (ICBFS 2024)

2024年生物医学与食品安全国际会议 (ICBFS 2024) 2024 International Conference on Environmental Prevention and New Materials 【会议简介】 2024年生物医学与食品安全国际会议即将在成都召开。本次会议将汇聚全球生物医学与食品安全领域的专家学者&#xff0c;共同探讨生…

【JavaSE进阶】05-集合

集合继承结构图 集合继承结构图_Collection部分 注&#xff1a;泛化关系即继承关系&#xff0c;is a&#xff1b;关联关系&#xff0c;has a&#xff1b;实现关系&#xff0c;like a 1 接口java.util.Collection<E>: 接口Collection是集合中的超级父接口 Iterator it…

英特尔推出中国特供版Gaudi 3芯片,性能暴降92%以应对美国出口管制|TodayAI

英特尔近期发布消息&#xff0c;其将在中国市场推出专为该地区定制的“特供版”Gaudi 3 AI芯片&#xff0c;以符合美国对AI芯片的出口管制。这一版本包括HL-328型号的OAM兼容夹层卡&#xff0c;预计将于6月24日发布&#xff1b;以及HL-388型号的PCIe加速卡&#xff0c;计划在9月…

网络编程文件传输小练习

客户端 public class client {public static void main(String[] args) {try {//创建一个客户端的发送对象,指定一个端口号Socket socketnew Socket("127.0.0.1",10000);//读取本地文件的数据//将本地文件读到输入流中//bis是输入流,将本地文件读入流中,bos是输出流…

C#-哈希表

哈希表&#xff08;Hash Table&#xff09;是一种数据结构&#xff0c;用于实现键值对之间的映射关系。在哈希表中&#xff0c;通过将键&#xff08;key&#xff09;通过哈希函数转换成索引&#xff0c;然后将值&#xff08;value&#xff09;存储在对应索引的位置上&#xff0…

人工智能_大模型033_LangChain003_记忆封装Memory上下文控制机制_LCEL表达式语言---人工智能工作笔记0168

## 三、记忆封装:Memory ### 3.1、对话上下文:ConversationBufferMemory from langchain.memory import ConversationBufferMemory, ConversationBufferWindowMemoryhistory = ConversationBufferMemory() history.save_context({"input": "你好啊"}…

从建表语句带你学习doris_表索引

1、doris建表概述 1.1、doris建表模板 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] [DATABASE.]table_name (column_definition1[,column_deinition2,......][,index_definition1,[,index_definition2,]] ) [ENGINE [olap|mysql|broker|hive]] [key_desc] [COMMENT "tabl…

不花一分钱,四大方法教你免费申请SSL证书

在数字化时代&#xff0c;数据安全与隐私保护的重要性日益凸显。为了确保在线信息传输的机密性和完整性&#xff0c;数字证书&#xff0c;尤其是SSL/TLS证书扮演着至关重要的角色。为个人及企业用户提供了经济、高效的加密解决方案。随着市场对SSL证书的逐渐重视&#xff0c;免…

Mybatis-plus自定义BaseMapper文件

Mybatis-plus自定义BaseMapper文件 这里主要是介绍通过MyBatis-Plus使用自定义继承 baseMapper 扩展指定返回VO类型等&#xff0c;方便以后查阅&#xff01;&#xff01;&#xff01; 自定义CustomBaseMapper文件 package com.wl.cloud.core.mybatis;import cn.hutool.core.be…