详述 Git 的 rebase 命令使用方法

2023-05-16

在基于 Git 的开发过程中,我们很容易遇到合并代码的情况,例如我们从 master 分支拉取了一个 feature 分支,当我们开发到一段时间之后,可能需要将 master 的代码合并到我们当前的 feature 分支之中。

这时,我们有两个选择,一个是使用git merge命令,一个是使用git rebase命令,这两个命令都是用来合并代码的,但却有一些差异。在本文中,我们主要讲述git rebase命令的使用方法,也会简单介绍这两个命令的差异。

fork_master
如上图所示,我们从 master 分支拉取了一个名为 feature 的分支,并且在拉取新分支之后,有过三次提交记录;同时,master 分支在我们拉取 feature 分支之后,也有过两次提交记录。现在我们已经构造了背景,接下来我们合并代码。

merge_master
首次,我们使用merge命令,其命令形式一般为git merge --no-ff master,即表示将 master 的代码合并到 feature 分支,其中--no-ff参数是为了保留 master 分支的提交记录。如上图所示,在使用merge命令进行代码合并之后,Git 会自动创建一个新的 commit 用来表示当前的合并操作,此 commit 记录了 master 代码合并到 feature 分支时产生的所有改动。

rebase_master
接下来,我们使用rebase命令,其命令一般形式为git rebase feature,即表示在 master 分支上执行rebase命令,将 feature 分支的代码合并到 master 分支。如上图所示,在使用rebase命令之后,Git 会合并两个分支的 commit 记录,其规则为「在基准分支上合并目标分支的代码,会将目标分支的提交记录全部前置到基准分支的最新提交记录之前」,就如上面这样,我们在 master 分支上使用了rebase命令之后,Git 将 feature 分支上面的所有 commit 记录都前置到了 master 分支的最新 commit 记录之前。

在这里,需要注意的是:rebase是以 commit 为维度的,按 commit 提交的顺序依次进行合并操作;如果在合并的过程中,某个 commit 遇到了冲突,则需要我们先解决该冲突,然后才能继续进行合并操作。特别地,在我们解决冲突之后,需要使用git add + 冲突文件命令将当前冲突标记为已解决,然后使用git rebase --continue命令继续合并操作。

通过上面的描述,我们能发现mergerebase有一个很明显的差异,那就是当遇到冲突的时候,使用merge命令,我们只需要解决一次冲突即可;使用rebase命令,我们则需要依次解决每一个冲突。

对于 Git 的rebase命令,其除了能进行代码合并之外,还有一个常用的功能,那就是将多个 commit 合并为一个,仍然以上面的 feature 分支为例,我们将其从 master 分支拉取之后,进行了三次提交,现在我们将这三个提交结论合并为一个,其命令一般形式为:

  • git rebase -i HEAD~N

其中,N为我们需要合并的 commit 记录的数量,因为示例中是三次提交记录,所以在此场景下,将N替换为3即可。

在执行完上面的命令之后,我们会进入vi或者vim文件编辑器:

rebase_test
如上图所示,pick标识了我们的三次提交记录,按i建进入编辑模式,保留第一个pick,然后将后面两个pick修改为s或者f,然后键入:wq保留修改。最后,为了将变更同步到远程分支,我们需要使用git push -f命令,其中参数-f表示强制提交。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

详述 Git 的 rebase 命令使用方法 的相关文章

  • Latex中插入图片

    1 Latex的插图 在Latex中使用插图一般有两种方式 xff0c 一种是插入事先准备好的图片 xff0c 另一种是使用Latex代码直接在文档中画图 我们一般常见的使用都是第一种 xff0c 准备好图片 xff0c 然后直接插入在我们
  • debian部署docker(傻瓜式)

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 debian10部署docker debian10部署docker xff08 傻瓜式 xff09 一 准备工作二 使用 APT 安装 x
  • Linux遇到Aborted (core dumped)

    1 问题描述 或出现 xff1a 2 关于Core Dump的分析 2 1 什么是Core Dump Core的意思是内存 Dump的意思是扔出来 堆出来 在开发 xff08 或使用 xff09 一个程序时 xff0c 有时程序莫名其妙的d
  • python工作目录和脚本存放目录不一样

    1 os getcwd 脚本文件所在位置D Code python TouTiao OS Path Dirname py xff0c 文件内容如下 xff1a working dir span class token operator 61
  • Latex/CTex/WinEdt 将参考文献设为上标引用,并加方括号

    工作环境 xff1a pdfTeX 3 1415926 2 3 1 40 12 MiKTeX 2 9 WinEdt 7 在LateX中 xff0c 参考文献的引用一般有两种方式 xff0c 平 齐 时 用 命 令 cite 上 标 时用 t
  • IDEA中报错:Invalid VCS root mapping

    1 错误 当打开从别的渠道获得的项目代码 xff0c 用IDEA打开出现 Invalid VCS root mapping The directory 的错误 2 分析 原因 xff1a 目录所示的git项目不存在 xff0c 导致这个报错
  • 重试机制 Retry

    文章目录 1 重试1 1 重试作用 2 重试的三种方法2 1 java retry2 2 spring retry2 3 guava retrying2 3 1 重试源2 3 2 自定义重试监听器 RetryListener2 3 3 停止
  • win10系统开机输入密码黑屏解决方法

    第一步 xff1a 首先打开笔记本电脑开机 xff0c 输入开机密码进入第二步 xff1a 输入密码后显示黑屏 xff0c 按 Ctrl 43 Alt 43 Del 34 组合键打开任务管理器第三步 xff1a 在打开的任务管理器中 xff
  • Windows下LaTex转为Word

    文章目录 1 latex gt pdf gt word1 1 以word打开1 2 使用adobe acrobat DC打开 2 latex typora gt word xff08 pandoc xff09 2 0 参数介绍2 1 安装p
  • SQL:用count求group by分组的个数

    1 求每一分组内的个数 查询选修了全部课程的学生姓名 思路 查询一个学生的姓名 xff0c 该学生选修课的门数等于所有课程的门数 逆推 xff1a 查询一个学生的姓名 xff0c 姓名怎么来 xff1f 通过Student的学号得到 xff
  • SQL:数据去重的三种方法

    1 使用distinct去重 distinct用来查询不重复记录的条数 xff0c 用count distinct id 来返回不重复字段的条数 用法注意 xff1a distinct 查询字段 xff0c 必须放在要查询字段的开头 xff
  • Word页面中四个直角

    文章目录 1 四个直角1 xff09 代表页边距2 xff09 页边距的设置3 xff09 打开或关闭 裁剪标记 2 裁剪标记 与图片1 xff09 插入图片超过这个角能打印显示出来吗 xff1f 3 裁剪标记 与表格 1 四个直角 1 x
  • windows搭建ftp及原理(小白向)

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 环境一 实验步骤1 1安装ftp 二 ftp实验引发的思考1 简单阐述ftp的原理2 ftp建立的流程 总结 环境 windwo
  • Win10系统自动更新失败(错误代码0x800f0922)

    笔者最近遇到了Win10系统自动更新失败的问题 xff0c 错误代码0x800f0922 每次更新下载安装完 xff0c 重启电脑的时候就会提示 xff1a 我们无法完成更新 正在撤销更改 在设置 Windows更新中有 xff1a 202
  • Linux yum安装redis

    1 安装redis数据库 yum install redis 2 下载fedora的epel仓库 yum install epel release 3 启动redis服务 systemctl start redis 4 查看redis状态
  • Centos 开启X11 Forwarding,实现无桌面环境运行GUI软件

    文章目录 修改SSH配置文件sshd config安装 X11 Forwarding 相关软件重启 sshd 服务 xff0c 并重新SSH连接验证 我们新安装Centos时可能会选择最小安装 xff0c 不安装桌面环境 xff0c 但是后
  • Python pyttsx3|文本朗读(各种语言)

    Python文字转语音 程序员 xff0c 在其他人眼中往往都是高冷的存在 xff0c 在他们的眼中能用代码解决的问题绝对不考虑其他的方法 xff0c 本文让我们用Python来提升一下高冷的档次 xff0c 让我们用代码来 说话 安装py
  • Spring Security 出现 'login.html?error' is not a valid redirect URL 异常

    原因是这个URL地址要以 打头 例如 xff1a 报错的代码 xff1a http span class token punctuation span span class token function formLogin span spa
  • 5. Python3的基本类型(元组)

    Python3的基本类型 xff08 元组 xff09 1 Python 的元组与列表相似 xff0c 不同之处 xff1a 元组不能修改 xff0c 元组使用小括号 xff0c 列表使用方括号 2 元组的创建 xff1a 只需要在括号中添
  • group by内部排序

    规则 xff1a 第一 xff0c 凡是在group by后面出现的字段 xff0c 必须同时在select后面出现 xff1b 第二 xff0c 凡是在select后面出现的 同时未在聚合函数中出现的字段 xff0c 必须同时出现在gro

随机推荐

  • 李宏毅机器学习(四)Spatial Transformer Layer

    学习内容 架构 xff1b 目的就是克服CNN的旋转和缩放不变性的缺点的 xff01 前情提要 CNN is not invariant to scaling and rotation xff1b CNN对缩放和旋转不是不变的 xff1b
  • python修改pip安装镜像源

    pip 默认的安装源安装真的很慢 xff0c 所以我们可以换成国内的一些优质的安装源 通用临时方法 pip install package name i https pypi tuna tsinghua edu cn simple 永久修改
  • 深入理解 Java 线程池的实现原理

    文章目录 1 线程状态2 线程池2 1 线程池的作用2 2 线程池的实现2 2 1 线程池内部状态 1 线程状态 既然要说线程 xff0c 我们就先来了解一下线程的几种状态 xff1a span class token keyword pu
  • windows server安装域控及原理(小白向)

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 安装环境一 安装域控二 说明一下遗留的问题总结 这个是一系列的博客文章 xff0c 域控只是开始 安装环境 windwos任意s
  • 详述 Redis 选择单线程模型的原因以及 I/O 多路复用

    文章目录 Redis 选择单线程模型的原因概述设计单线程模型可维护性并发处理性能瓶颈 引入多线程删除操作 总结 Redis 和 IO 多路复用几种 I O 模型Blocking I OI O 多路复用 Reactor 设计模式I O 多路复
  • 新一代垃圾回收器 ZGC 的探索与实践

    文章目录 GC之痛CMS 与 G1 停顿时间瓶颈标记阶段停顿分析清理阶段停顿分析复制阶段停顿分析 ZGC原理全并发的 ZGCZGC 关键技术ZGC 并发处理演示 ZGC 调优实践调优基础知识理解 ZGC 重要配置参数理解 ZGC 触发时机理
  • 详述 Spring 中 Bean 的作用域、事务的隔离级别以及传播行为

    文章目录 Bean 作用域XML 声明singletonprototyperequestsessionglobalSession 注解声明 事务隔离级别事务传播行为 Bean 作用域 Spring IOC 容器创建一个 Bean 实例时 x
  • 饿了么交易系统 5 年演化史

    作者介绍 xff1a 杨凡 xff0c 花名挽晴 xff0c 饿了么高级架构师 xff0c 2014 年加入饿了么 xff0c 2018 年随饿了么被阿里巴巴收购一同加入阿里巴巴 xff0c 4 年团队管理经验 xff0c 4 年主要从事饿
  • 带你了解「美团、百度和滴滴」的分布式 ID 生成系统

    文章目录 美团背景常见方法介绍UUID类snowflake方案数据库生成 Leaf 方案实现Leaf segment 数据库方案双 buffer 优化Leaf 高可用容灾 Leaf snowflake 方案弱依赖 ZooKeeper解决时钟
  • Spring Cloud 优雅下线以及灰度发布

    文章目录 前言优雅下线常见的下线方式优雅的下线方式 灰度发布蓝绿部署滚动部署金丝雀部署 前言 在生产环境中 xff0c 如何保证在服务升级的时候 xff0c 不影响用户的体验 xff0c 这个是一个非常重要的问题 如果在我们升级服务的时候
  • 详述 IntelliJ IDEA 遇到 Maven 项目 pom.xml 文件没有识别的解决方法

    文章目录 问题现象解决方法 问题现象 有的时候 xff0c 我们可能会遇到 IDEA 没有识别 Maven 项目pom xml的问题 xff0c 其表现出来的现象就是 xff1a 究其原因 xff0c 就是 IDEA 把pom xml文件当
  • Spring Boot 自定义 Swagger2 请求 URL 路径的两种方法

    文章目录 前言方法一 xff1a 修改应用根路径方法二 xff1a 引入 Swagger2 前端代码总结 前言 首先 xff0c 把 Swagger2 的依赖引进来 xff1a span class token comment lt swa
  • 使用 Apollo 为静态变量赋值的方法

    Apollo xff08 阿波罗 xff09 是携程框架部门研发的分布式配置中心 xff0c 能够集中化管理应用不同环境 不同集群的配置 xff0c 配置修改后能够实时推送到应用端 xff0c 并且具备规范的权限 流程治理等特性 xff0c
  • 记一次 Gorm 批量插入遇到的问题以及解决方案

    文章目录 问题现象解决方案 问题现象 最初 xff0c 我们用的是老版本的 Gorm xff0c 但是因为老版本不支持批量插入的功能 xff0c 所以我们将 Gorm 做了升级 xff0c 升级到1 21 9版本 https github
  • 3-Raven2百个靶机渗透(精写-思路为主)

    特别注明 xff1a 本文章只用于学习交流 xff0c 不可用来从事违法犯罪活动 xff0c 如使用者用来从事违法犯罪行为 xff0c 一切与作者无关 文章目录 前言一 信息收集二 ssh爆破尝试三 根据框架exp和cve拿shell四 对
  • 在 MacOS 系统的 /home 目录下创建文件夹的方法

    文章目录 前言修改 auto master加载 auto master创建自定义文件夹 前言 Rt xff0c 本文讲述如何在 Mac OS 系统中 xff0c 在 home目录下创建文件夹的方法 之所以会有本篇文章 xff0c 是因为在默
  • 在 MacOS 系统下创建 /home 目录的方法

    文章目录 前言SIP关闭SIP打开SIP查看 SIP 当前状态 创建 home 目录 前言 在 在 MacOS 系统的 home 目录下创建文件夹的方法 这篇文章中 xff0c 我们描述了如何在 home目录下创建文件夹的方法 xff0c
  • 详述 Mac GoLand 安装后打不开(闪退)的解决方法

    文章目录 现象描述解决方法Method 1Method 2 现象描述 安装了当前最新版 xff08 2021 2 3 xff09 的 GoLand xff0c 之前的版本是2019 2 5 xff0c 但比较诡异的是 xff1a 安装成功后
  • 使用 Golang 实现简易的令牌桶算法

    文章目录 简介实现轮子 简介 在网络中传输数据的时候时 xff0c 为了防止网络拥塞 xff0c 需限制流出网络的流量 xff0c 使流量以比较均匀的速度向外发送 令牌桶算法就实现了这个功能 xff0c 可控制发送到网络上数据的数目 xff
  • 详述 Git 的 rebase 命令使用方法

    在基于 Git 的开发过程中 xff0c 我们很容易遇到合并代码的情况 xff0c 例如我们从 master 分支拉取了一个 feature 分支 xff0c 当我们开发到一段时间之后 xff0c 可能需要将 master 的代码合并到我们