当前位置: 首页 > news >正文

git:详解git rebase命令

背景

今天无意中打开 git 官网,发现 git 命令还是很多的,然而我们常用的就那几个,今天来学习一个也不怎么常用的命令 rebase
官网链接
在这里插入图片描述

都说学一个东西最好的方式就是读他的 官方文档,这里我读了一遍,把一些核心的地方整理成这篇 blog

为什么要出现git rebase

首先可以看到,rebase 是属于 Patching 这一类下面的,也就是补丁
在这里插入图片描述

我们平常协同开发基本上都是基于 master 自己拉一个分支,然后发布的时候把各自的分支合并到 master 进行发布,这样做有一些的缺陷:

  1. 当你 merge 了一个比较大的改动,时间线拖得比较长,这时候你 merge 到 master 后,看 master 的提交记录,会有很多别人的提交记录和你的混在一起。

命令

全部命令:

git rebase [-i | --interactive] [<options>] [--exec <cmd>][--onto <newbase> | --keep-base] [<upstream> [<branch>]]git rebase [-i | --interactive] [<options>] [--exec <cmd>] [--onto <newbase>]--root [<branch>]git rebase (--continue | --skip | --abort | --quit | --edit-todo | --show-current-patch)

常用命令:

发起合并

# 比如要把topic的分支变基到master上,则先切到topic,然后执行
git rebase master
# 或者
git rebase master topic
git pull master --rebase
# 分解为如下,也就是把远程的master作为基地
git fetch master
git rebase master

解决冲突

# 放弃合并,回到rebase操作之前的状态
git rebase --abort
# 则会将引起冲突的commits丢弃掉(慎用!!)
git rebase --skip
# 合并冲突,结合"git add 文件"命令一起用与修复冲突,提示开发者,一步一步地有没有解决冲突。
git rebase --continue

合并提交

# 将多个提交合并为一次提交
git rebase -i HEAD~2

作用一:分支合并

按照这个建立分支

      A---B---C topic/
D---E---F---G master

在这里插入图片描述
在 topic 分支执行 git rebase mater,如果没有冲突,则会变成这样
在这里插入图片描述

在这里插入图片描述

作用二:合并多个提交

必须在你的 commit push 到远端之前使用

git rebase -i HEAD~2

这里的 HEAD~2 代表回退两个commit,具体可以看 这篇文章

reabase原理

  1. git 会把 feature1 分支里面的每个 commit 取消掉;
  2. 把上面的操作临时保存成 patch 文件,存在 .git/rebase 目录下;
  3. 把 feature1 分支更新到最新的 master 分支;
  4. 把上面保存的 patch 文件应用到 feature1 分支上。

冲突处理

执行 rebase 后可能会出现冲突,解决冲突后

git add .
# 注意,这里无需执行 git commit
git rebase --continue

这样 git 会继续应用余下的 patch 补丁文件,所以有可能你会处理多次冲突。
在任何时候,我们都可以用 --abort 参数来终止 rebase 的行动

git rebase --abort

优缺点

优点:

  • 分支干净

缺点:

  • 篡改记录

正因如此,大部分公司其实会禁用rebase,不管是拉代码还是push代码统一都使用merge,虽然会多出无意义的一条提交记录“Merge … to …”,但至少能清楚地知道主线上谁合了的代码以及他们合代码的时间先后顺序

相关文章:

git:详解git rebase命令

背景 今天无意中打开 git 官网&#xff0c;发现 git 命令还是很多的&#xff0c;然而我们常用的就那几个&#xff0c;今天来学习一个也不怎么常用的命令 rebase 官网链接 都说学一个东西最好的方式就是读他的 官方文档&#xff0c;这里我读了一遍&#xff0c;把一些核心的地…...

第四章——随机变量的数字特征

文章目录1、数字特征的定义2、数学期望&#xff08;均值&#xff09;2.1、数学期望的定义及性质2.1.1、定义2.1.2、性质2.2、数学期望相关例题2.3、Yg(X)的数学期望2.4、Zg(X,Y)的数学期望2.5、随机变量函数的数学期望例题3、方差3.1、方差的定义与性质3.2、相关例题3.3、切比雪…...

vue2源码阅读理解-响应式数据原理

首先明确&#xff0c;vue2是如何实现响应式的&#xff1f; 通过object.defineProperty观察者模式实现&#xff0c;在创建vue实例的过程中&#xff0c;也就是介于beforecomputed~computed的过程中&#xff0c;会执行如下函数initState export function initState (vm: Componen…...

服务调用分布式session

目录一、nginx动静分离二、服务调用1、创建配置zmall-cart购物车模块2、创建配置zmall-order订单模块3、服务调用三、spring session实战1、什么是Spring Session2、为什么要使用Spring Session3、错误案例展示4、配置spring-session四、二级域名问题五、用户登录一、nginx动静…...

Maven知识点-插件-maven-surefire-plugin简介

Maven本身并不是一个单元测试框架&#xff0c;Java 世界中主流的单元测试框架为JUnit 和TestNG。 Maven 所做的只是在构建执行到特定生命周期阶段的时候&#xff0c;通过插件来执行JUnit或者TestNG的测试用例。 这一插件就是maven-surefire-plugin&#xff0c;可以称之为测试…...

如何借力Alluxio推动大数据产品性能提升与成本优化?

内容简介 随着数字化不断发展&#xff0c;各行各业数据呈现海量增长的趋势。存算分离将存储系统和计算框架拆分为独立的模块&#xff0c;Alluxio作为如今主流云数据编排软件之一&#xff0c;为计算型应用&#xff08;如 Apache Spark、Presto&#xff09;和存储系统&#xff0…...

linux shell脚本被包含是什么意思?.命令和source命令(在脚本中运行脚本,脚本中调用脚本)(脚本包含,父子脚本)

在 shell 编程中&#xff0c;当一个 shell 脚本被另一个 shell 脚本包含&#xff0c;即用 . 或 source 命令包含&#xff0c;则被包含的脚本在当前 shell 进程内执行&#xff0c;并且可以访问当前 shell 进程的环境变量和函数。 此时&#xff0c;$0 代表的是主脚本的名称&#…...

MySQL进阶篇之锁(lock)

05、锁 5.1、概述 1、介绍 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、RAM、I/O&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据…...

TMDSEVM6657LS评估板恢复出厂默认状态

TMDSEVM6657LS评估板恢复出厂默认状态 前言 TMDSEVM6657LS评估板特别适用于DSP开发的初学者&#xff0c;但有时候拿到手的开发板几经流转&#xff0c;被别人修改过&#xff0c;也可能自己烧录过程出错&#xff0c;导致开发板的状态未知等原因&#xff0c;需要恢复到出厂默认状…...

聊一聊,我对DDD的关键理解

作者&#xff1a;闵大为 阿里业务平台解决方案团队 当我们在学习DDD的过程中&#xff0c;感觉学而不得的时候&#xff0c;可能会问&#xff1a;我们还要学么&#xff1f;这的确引人深思。本文基于工作经验&#xff0c;尝试谈谈对DDD的一些理解。 一、序 《阿甘正传》中&#xf…...

算法笔记(一)—— 认识复杂度和简单排序算法

时间复杂度是在一个算法流程中&#xff0c;常数操作的数量级指标。&#xff08;最差情况下的算法表现&#xff09; 比较两个算法的优劣&#xff0c;在足够的空间下&#xff0c;看时间复杂度指标&#xff0c;若相同&#xff0c;需要在大数据运行下来判断两个算法的“常数项指标…...

MQ消息中间件常见题及解决办法

目录儿常见MQRocketMQ2、RocketMQ测试可用MQ常见问题1、幂等性问题2、如何保证消息不丢失3、消息积压问题4、事务消息设计分析常见MQ RocketMQ RocketMQ又四部分组成 NameServer 同步Broker服务信息&#xff0c;给消费者和生产者提供可用Broker的服务信息。Broker 消息存储业…...

网关服务限流熔断降级分布式事务

目录一、网关服务限流熔断降级二、Seata--分布式事务1、分布式事务基础①事务②本地事物③分布式事务④分布式事务的场景2、分布式事务解决方案①全局事务②最大努力通知③TCC事务3、Seata介绍4、Seata实现分布式事务控制①案例基本代码&#xff08;异常模拟&#xff09;②启动…...

JVM——7JVM调优实战及常量池详解

Arthas工具的使用 阿里巴巴开源的java诊断工具 下载插件 上传至linux环境 在linux跑起来的java项目&#xff0c;可以用Arthas进行查看 项目上线前的时候没问题&#xff0c;上线了就出问题 &#xff0c;用来查看线上代码 jad 项目名 &#xff1a;反编译线上正在运行的代码 用…...

子串分值【第十一届】【省赛】【A组】

问题描述 对于一个字符串 s&#xff0c;我们定义 s 的分值 f(s) 为 s 中恰好出现一次的字符个数。例如 f("aba")1&#xff0c;f("abc")3, f("aaa")0。 现在给定一个字符串 s[0..n−1]&#xff08;长度为 n&#xff09;&#xff0c;请你计算对于…...

SpringCloud 中 Config、Bus、Stream、Sleuth

文章目录&#x1f68f; 第十三章 分布式配置中心&#x1f6ac; 一、Config 概述&#x1f6ac; 二、Config 快速入门&#x1f6ad; config-server&#xff1a;&#x1f6f9; 1、使用gitee创建远程仓库&#xff0c;上传配置文件&#x1f6f9; 2、导入 config-server 依赖&#x1…...

Quantum 构建工具使用新的 TTP 投递 Agent Tesla

Zscaler 的研究人员发现暗网上正在出售名为 Quantum Builder 的构建工具&#xff0c;该工具可以投递 .NET 远控木马 Agent Tesla。与过去的攻击行动相比&#xff0c;本次攻击转向使用 LNK 文件。 Quantum Builder 能够创建恶意文件&#xff0c;如 LNK、HTA 与 PowerShell&…...

浏览器中的 JavaScript 执行机制

思维导图 本文为反复学习极客时间-《浏览器的工作原理与实践》-浏览器中的 JavaScript 执行机制章节中的一些思考与记录。 一些重要概念 变量提升 所谓的变量提升&#xff0c;是指在 JavaScript 代码执行过程中&#xff0c;JavaScript 引擎把变量的声明部分和函数的声明部分…...

kafka集群搭建及问题

一、zookeeper集群搭建 1、创建文件夹 cd /home mkdir zookeeper 2、下载 cd zookeeper wget https://downloads.apache.org/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz 解压到当前文件夹 tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz 文件夹重命…...

不要忽视web渗透测试在项目中起到的重要性

在当前数字化环境中&#xff0c;IT的一个里程碑式增长便是公司组织和企业数字化。为了扩大市场范围和方便业务&#xff0c;许多组织都在转向互联网。这导致了一股新的商业浪潮&#xff0c;它创造了网络空间中的商业环境。通过这种方式&#xff0c;公司和客户的官方或机密文件都…...

矩阵本地化获客技术落地:同城流量精准匹配与合规运营方案

前言同城本地化流量是短视频生态中转化率最高、精准度最强的流量赛道&#xff0c;广泛适配本地生活服务、实体门店、同城咨询、区域服务商等各类业态。相比于泛全域流量&#xff0c;同城用户具备明确的地域消费属性、就近服务需求&#xff0c;成交意向更强烈&#xff0c;获客落…...

TAMEn系统:触觉视觉数据采集的模块化解决方案

1. TAMEn系统概述&#xff1a;触觉视觉数据采集的革命性方案在机器人操作领域&#xff0c;接触丰富的任务&#xff08;如柔性物体处理、精密装配&#xff09;一直面临着数据采集的挑战。传统视觉系统难以捕捉细微的接触信号&#xff08;如初始滑动、局部变形&#xff09;&#…...

英雄联盟游戏效率工具League Akari:智能自动化与数据分析完整指南

英雄联盟游戏效率工具League Akari&#xff1a;智能自动化与数据分析完整指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为BP阶段手速…...

别再手动下载了!用Chocolatey在Windows上一键安装Zookeeper 3.8.0

告别繁琐配置&#xff1a;用Chocolatey在Windows上极速部署Zookeeper 每次在Windows环境下部署Zookeeper&#xff0c;你是否还在重复下载压缩包、配置环境变量、修改配置文件的传统流程&#xff1f;对于追求效率的开发者而言&#xff0c;这种手动操作不仅耗时耗力&#xff0c;还…...

Awesome-Robotics-3D:机器人3D视觉资源精选与高效利用指南

1. 项目概述&#xff1a;一个机器人学3D视觉的“藏宝图” 如果你正在机器人、自动驾驶或者三维感知领域摸爬滚打&#xff0c;并且时常为了找一个靠谱的开源实现、一篇奠基性的论文&#xff0c;或者一个高质量的数据集而翻遍GitHub、arXiv和各大实验室主页&#xff0c;那么你很可…...

GLM API配置管理工具glm-switch:告别手动切换,提升AI开发效率

1. 项目概述&#xff1a;一个为AI开发者设计的GLM API配置管理工具如果你和我一样&#xff0c;日常开发中需要频繁地在多个GLM&#xff08;通用语言模型&#xff09;API之间切换——比如在测试ChatGLM、Kimi、Minimax或者调试Claude Code的不同配置时——那你肯定对反复手动修改…...

GTA5线上小助手:终极免费工具完整使用指南,快速提升游戏体验

GTA5线上小助手&#xff1a;终极免费工具完整使用指南&#xff0c;快速提升游戏体验 【免费下载链接】GTA5OnlineTools GTA5线上小助手 项目地址: https://gitcode.com/gh_mirrors/gt/GTA5OnlineTools 想要在《侠盗猎车手5》线上模式中摆脱繁琐操作&#xff0c;享受更流…...

为什么你的Gemini写作总像“AI腔”?资深技术文档架构师揭秘3层语义校准法

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;为什么你的Gemini写作总像“AI腔”&#xff1f;资深技术文档架构师揭秘3层语义校准法 Gemini 生成的技术文档常被诟病为“语法正确但语义失焦”——术语堆砌、逻辑断层、人机语感割裂。根本原因在于模…...

Musa并行搜索工具:重塑信息检索工作流,提升多源对比效率

1. 项目概述&#xff1a;重新定义你的搜索工作流如果你和我一样&#xff0c;每天的工作都离不开在浏览器里反复横跳——为了一个技术问题&#xff0c;先在 Google 搜一遍&#xff0c;再去 Stack Overflow 看看有没有新答案&#xff0c;接着打开 ChatGPT 问问它的看法&#xff0…...

PyInstaller打包的EXE程序修改与反编译

PyInstaller打包的EXE程序修改与反编译完全指南 前言 在实际工作中&#xff0c;我们经常会遇到需要修改已打包的Python EXE程序的情况——可能是界面文字需要调整&#xff0c;也可能是功能需要微调。本文将系统介绍如何对PyInstaller打包的EXE程序进行反编译、修改和重新打包&a…...