git rebase 修改中间的commit

news2024/11/26 14:28:10

0. 前言

今天在移植最新版本 kfence 功能的时候,一共需要移植大概40多个 patch,中间有很多patch 存在冲突,需要手动修改后才能合并。当所有的patch 都合并完成进行编译的时候,发现其中一个 patch 手动合并出了个错误。

假如共有 40 个 patch,编号 1 - 40,现在问题是第 20 个patch 需要再修改一下,而 21 - 40 的patch 有很多手动修改的,怎么能快速有效的在不 reset 的基础上修改第 20 个patch呢?

这就是本文需要说明的 git rebase命令。

1. git rebase -i HEAD~n

先来看下 option -i:

-i
--interactive
Make a list of the commits which are about to be rebased. Let the user edit that list before rebasing. This mode can also be used to split commits (see SPLITTING COMMITS below).

The commit list format can be changed by setting the configuration option rebase.instructionFormat. A customized instruction format will automatically have the long commit hash prepended to the format.

See also INCOMPATIBLE OPTIONS below.

通过该选项,产生一个将要 rebase 的commit list,可以让用户在 rebase 之前进入交互的模式。

HEAD~n,会列出从 HEAD 开始的倒数 n commit list,例如 n = 4 时:

当执行 git rebase -i HEAD~4 命令,就会弹出从 HEAD 开始的倒数 4 个 commit list,最后一个是 HEAD commit。

当将第一行 commit,即倒数第 4 个 commit 的命令从 pick 改成 edit 时,则代码rebase 停在这个 commit,用以 amend 处理。

当保存修改并退出交互之后,就会发现倒数第 4 个commit 进入stop 状态,等待 amend。

剩下来就简单了:

  • 修改代码;
  • git add
  • git commit --amend
  • git rebase --continue

2. 交互中的命令

在交互的窗口中,除了之前说的 edit 命令,本文也补充说下其他的命令:

  • p/pick,保持 commit;
  • r/reword,保留commit,但是需要修改 commit  message;
  • e/edit,保留 commit,但这里需要停下来等到 amend;
  • s/squash,保留commit,但会将该 commit 合并到前一个 commit 中;
  • f/fixup,类似 squash,但是不会保留 commit message;
  • x/exec,等于在 shell 中运行命令;
  • d/drop,丢弃该 commit;

官方文档:

https://git-scm.com/docs/git-rebase/

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

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

相关文章

springboot整合sentinel完成限流

1、直入正题,下载sentinel的jar包 1.1 直接到Sentinel官网里的releases下即可下载最新版本,Sentinel官方下载地址,直接下载jar包即可。不过慢,可能下载不下来 1.2 可以去gitee去下载jar包 1.3 下载完成后,进行打包…

仪表基础知识培训

压力传感器:E+H PMX5x/FMX5x 一、安装:安装注意事项: 1、水平安装时仪表的呼吸孔(1)需要向下安装,并远离污染物。 2、请勿用坚硬的物体擦拭或接触膜片。 3、请勿安装在水泵的入口和搅拌叶附近 二、供电、接线、信号、:二线制,仪表输出4-20mA 三、量程:设置最大最小量程…

VS中cmake多配置构建设置

一.cmake在vs中的使用简介 CMake 是一种跨平台开源工具,用于定义在多个平台上运行的生成过程。 Visual Studio C 和 C 开发不再仅适用于 Windows。 本教程介绍如何在 Windows 和 Linux 上使用 Visual Studio C 进行跨平台开发。 由于它基于 CMake,无需…

VR虚拟展厅——商业领域中不可或缺的工具

VR虚拟展厅已经逐渐在商业领域崭露头角,将实体展厅以三维、立体化的形式还原在线上,企业能够以更加直观、真实的方式展示自身的形象和产品,用户也得以通过VR虚拟展厅全方位了解产品详情,包括图片展示、视频介绍等,更加…

websocket php教程

WebSocket 是 HTML5 提供的一种网络通讯协议,用于服务端与客户端实时数据传输。广泛用于浏览器与服务器的实时通讯,APP与服务器的实时通讯等场景。 相比传统HTTP协议请求响应式通讯,WebSocket协议可以做到实时的双向通讯,服务端可…

Automation Anywhere推出新的生成式AI自动化平台,加速提高企业生产力

在9 月 19 日的Imagine 2023 大会上,智能自动化领域的领导者 Automation Anywhere 宣布对其自动化平台进行扩展。推出了新的 Responsible AI Layer,并宣布了四项关键产品更新,包括全新的 Autopilot,它可以利用生成式 AI &#xff…

IT隔离电源系统在医院电气设计中的应用

【摘要】许多国际标准都对医疗领域,尤其是那些生命攸关的场所,如手术室、重症监护室、心脏监护室等的配电系统作了特殊的规定。现在国际上针对医疗领域中的手术室、ICU、CCU等重要场所通常采用局部“中性点不接地的供电系统”(IEC标准称之为“…

webpack:详解代码分离以及插件SplitChunksPlugin的使用

文章目录 背景入口起点分离基本使用防重复 SplitChunksPlugin插件分离背景基本使用splitChunks.chunkssplitChunks.minChunkssplitChunks.minSizesplitChunks.maxSizesplitChunks.namesplitChunks.cacheGroupssplitChunks.cacheGroups.{cacheGroup}.prioritysplitChunks.cacheG…

智能制造,RFID与流转线碰撞

智能制造,RFID与流转线碰撞 RFID是一种无线通信技术,可以用于实时识别和物品。它通过将包含有信息的标签贴在物品上,利用射频信号进行通信,将物品的信息传输给读取器。读取器可以通过无线方式读取标签上的信息,从而实…

公众环境关注如何提升企业ESG表现(2011-2022年)

参照陶云清(2023)的做法,本团队对来自“科学学与科学技术管理”《公众环境关注如何提升企业ESG表现?—基于外部压力与内部关注的双重视角》一文中的基准回归部分进行复刻。 如何驱动企业在逐利过程中兼顾环境、社会和治理表现&am…

IC业务杂谈-----片内外设、片上外设 和、片外外设的区别

片内外设就是片上外设,同一种意思不同说法而已。 片内外设和片外外设的区别: 片内、外设是两个概念,片内指做成芯片的集成电路内部,简称片内,片外同理显而易见;外设是外部设备的简称,是指集成…

Direct3D融合技术

该技术能使我们将当前要进行光栅化的像素的颜色与先前已已光栅化并处于同一位置的像素的颜色进行合成,即将正在处理的图元颜色值与存储在后台缓存中的像素颜色值进行合成(混合),利用该技术我们可得到各种各样的效果,尤其是透明效果。 在融合…

根据经纬度数据画出船只航行路径图(cartopy + matplotlib)

问题: 已知穿航行的经纬度记录,怎么在地图上画出? 思路: 1先画出地图,使用cartopy。 2然后再将不连续的点绘制在地图中,这样的连线就是轨迹了。 ( cartopy库的安装见我的其他文章简明cartop…

【postgresql 】 ERROR: “name“ is not supported as an alias

org.postgresql.util.PSQLException: ERROR: "name" is not supported as an alias 错误:不支持将“name”作为别名 SELECT real_name name FROM doc_user 加上 在关键词上加上 “” 示例: SELECT real_name "name" FROM do…

05_2D3D转换

1 2D 转换 转换是 CSS3 中具有颠覆性的一个特征,可以实现元素的位移、旋转、变形、缩放。 通过 transform 转换来实现 2D 转换或者 3D 转换。 2D 转换包括: 缩放 scale移动 translate旋转 rotate倾斜 skew(了解) 1.1 缩放 sc…

【EI会议信息】第五届物联网、自动化和人工智能国际会议(IoTAAI 2023)

第五届物联网、自动化和人工智能国际会议(IoTAAI 2023) 2023 5th International Conference on Internet of Things, Automation and Artificial Intelligence 第五届物联网、自动化和人工智能国际会议(IoTAAI 2023)将于2023年1…

周界警戒AI算法+视频智能分析在安全生产场景中的应用

长期以来,周界防范安防系统在大型园区、工厂、社区、机场、火车站站台、重点单位等领域应用较为广泛和常见。随着AI人工智能等新兴技术的快速发展与落地应用,通过AI智能检测与视频智能分析技术,现代化的周界安防系统可以做到全天候快速、准确…

【PX4】PX4第一个offborad例程

【PX4】PX4第一个offborad例程 文章目录 【PX4】PX4第一个offborad例程1. 什么是OFFBOARD2. 第一个offboard例程3. 编写launch文件Reference 1. 什么是OFFBOARD PX4的OFFBOARD指的是外部控制模式,飞行器根据飞行控制栈外部(如机载计算机)提供…

C/C++/Python图像处理算法实战【3】彩色图像灰度化和二值化处理

本篇文章旨在通过详细的代码逐行注释,介绍如何分别使用 C/C++/Python 对彩色图像做灰度化(最大值法、平均值法、加权平均值法)和二值化处理(平均值法、双峰法、OTSU法)。 原理解析 图像表示 数字图像通常采用矩阵表示。以一幅数字图像F左上角像素中心为坐标原点,一幅M…

Prometheus-Rules 实战

文章目录 1 node rules2 nginx rule2.1 Nginx 4xx 错误率太多2.2 Nginx 5xx 错误率太多2.3 Nginx 延迟高 3 mysql rule3.1 MySQL 宕机3.2 实例连接数过多3.3 MySQL高线程运行3.4 MySQL 从服务器 IO 线程没有运行3.5 MySQL 从服务器 SQL 线程没有运行3.6 MySQL复制滞后3.7 慢查询…