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

Git 批量合并 Commit 并且保留之前的 Commit 快速实现的思路

文章目录

  • 需求
  • Rebase / Pick / squash
  • Vim 的快速全局字符串替换


需求

我想把如下的提交 commit,变成一个 Commit,并且合并这些 Commit 的消息到一个节点

在这里插入图片描述


Rebase / Pick / squash

我合并到 5e59217 这个hash 上,这样合并后会保留两个 Commit

git rebase -i 5e59217

然后,痛苦的事情来了,我需要保留第一条的 pick,其他的 Commit 前面都要变成 squash ,也可以简写成 s

pick 8a1e029 chore: save2
pick 133ac18 1
pick 32fe281 2
pick 779ecf8 3
pick dd3b48b 4
pick c857685 5
pick f8a6eb1 6
pick 4bd39c4 7
pick d242a45 8
pick b17d658 9
pick d58f74d 10

在这里插入图片描述

什么是 squash
在这里插入图片描述


Vim 的快速全局字符串替换

如果在插入模式的话,按一下 ESC ,然后按一下 : 冒号进入命令模式,之后输入

:%s/pick/s/g

在这里插入图片描述

即可替换所有 picks

之后再进入编辑模式把第一行改成 pick,然后合并即可

在这里插入图片描述
最后合并的节点就只剩两个了,其中最新的节点commit 包含之前所有的 commit 信息

在这里插入图片描述

相关文章:

  • 【Jenkins】Pipeline流水线语法解析全集 -- 脚本式流水线、groovy语法
  • 数字后端培训实战项目六大典型后端实现案例
  • DeepSeek:构筑大数据平台底座的最优解
  • Unity3D 刚体动力学(Rigidbody Dynamics)详解
  • LIUNX学习-线程
  • 【3DMAX室内设计】2D转3D平面图插件2Dto3D使用方法
  • TomcatServlet
  • MyBatis-Plus 自定义 SQL 和复杂查询
  • 迭代器模式:遍历集合的艺术
  • flink集成tidb cdc
  • Redis - 解读三种方案实现Redis跨机房数据同步
  • QT-绘画事件
  • AutoGen学习笔记系列(七)Tutorial - Managing State
  • JAVA编程【jvm垃圾回收的差异】
  • PHP之特性
  • LLM-ESR实验代码讲解
  • 蓝桥与力扣刷题(蓝桥 旋转)
  • 学习笔记-AMD CPU 命名
  • 分库分表 MyBatis的拦截器(Interceptor)在 SQL 执行前动态修改表名
  • 系统架构评估中的重要概念
  • 建网站价格 建设网站需要多少钱/百度手机端排名
  • 波兰网站后缀/百度推广客户端app下载
  • 企业网站东莞网站建设制作/免费涨粉工具
  • 番禺网站建设平台/怎么卸载windows优化大师
  • 二月网站建设南宁/免费建设个人网站
  • 哈尔滨最专业的网站建设/外贸企业网站推广