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

Git 如何合并多个连续的提交

我平常的编程喜欢是写一段代码就提交一次,本地一般不攒代码,生怕本地有什么闪失导致白干。但这样就又导致一个问题:查看历史日志时十分不方便,随便找一段提交可以看到:

> git log --oneline
8f06be5 add 12/qemu-hellos.md.
6e28751 新建 12
ca1ecd1 feat: regular commit
97770b2 feat: regular commit
b6735e3 first commit
1addd83 first commit
a7598e0 first commit
bfbc56b first commit

没错,由于频繁的提交,又不好好写 message 导致提交中出现多个相同的 message,同时变更分散在不同的提交中,回溯也十分的不方便。针对这种场景,Git 提供了能力支持,可以将多个提交合并为一个提交,使得提交日志变得清晰可读。

为了方便练习,我提供了一段代码用于创建一个练习仓库:

mkdir git-demo && cd git-demo
echo line1 >> 1 && git commit -a -m "add line into 1"
echo line2 >> 1 && git commit -a -m "add line into 1"
echo line3 >> 1 && git commit -a -m "add line into 1"
echo line4 >> 1 && git commit -a -m "add line into 1"# git log --oneline
339a917 (HEAD -> main) add line into 1
03d13cb add line into 1
0ca1864 add line into 1

此时可以看到提交记录中有多个提交。

git rebase -i 为分支重新指定分支基线

git rebase 命令可以为提交重新设置提交基线,即可以基于某次提交重新构建提交记录,这个功能在提交合入主干分支解决冲突时非常有用,在多人协作开发过程中可以有效避免代码冲突。由于会重新构建提交,因此可以实现在重新构建提交时合并多个提交。

git rebase -i 0ca1864
# 指定基于 0ca1864 记录重新构建提交
# -i 使用交互式界面完成构建

在这里插入图片描述
我们可以指定后续的提交记录的动作,使用 squash 可以将当前提交合并到上一次提交中。

git refloggit reset 后悔药

如果对重新构建的提交记录不满意,可以通过 git reflog 重置提交记录到原来的结果:

git-demo>git reflog
0ca1864 (HEAD) HEAD@{0}: rebase (start): checkout 0ca1864
339a917 (main) HEAD@{1}: commit: add line into 1
03d13cb HEAD@{2}: commit: add line into 1
0ca1864 (HEAD) HEAD@{3}: commit (initial): add line into 1

我们当前在 0ca1864 提交记录上,我们可以指定上一次提交 hash 就能够还原刚刚 squash 的结果了。

git-demo>git reset --hard 339a917
HEAD is now at 339a917 add line into 1
# 此时执行 git log 查看,可以看到提交记录已经还原
git-demo>git log --oneline
339a917 (HEAD, main) add line into 1
03d13cb add line into 1
0ca1864 add line into 1

参考资料

  • git rebase 用法详解与工作原理
  • git rebase详解
  • Git合并多个连续commit
  • progit
  • 【Git】rebase 用法小结

相关文章:

Git 如何合并多个连续的提交

我平常的编程喜欢是写一段代码就提交一次,本地一般不攒代码,生怕本地有什么闪失导致白干。但这样就又导致一个问题:查看历史日志时十分不方便,随便找一段提交可以看到: > git log --oneline 8f06be5 add 12/qemu-h…...

k8s 基础入门

1.namespace k8s中的namespace和docker中namespace是两码事,可以理解为k8s中的namespace是为了多租户,dockers中的namespace是为了网络、资源等隔离 2.deployment kubectl create #新建 kubectl aply #新建 更新 升级: 滚动升级&#x…...

【Python项目】AI动物识别工具

目录 背景 技术简介 系统简介 界面预览 背景 成像技术在全球科技发展中扮演了关键角色。在科学研究领域,拍摄所得的图像成为了一种不可或缺的研究工具。特别是在生态学与动物学研究中,鉴于地球的广阔地域和多样的气候条件,利用图像技术捕…...

逻辑回归(Logistic Regression)详解

逻辑回归是一种用于解决二分类问题的统计方法,它通过构建一个模型来预测某个事件的概率。 以下是逻辑回归的一些关键要点: 适用场景:逻辑回归特别适合于处理二分类问题,即两个类别的分类问题,例如判断一封邮件是否为…...

.vimrc文件的语句语法

本文结构: a、简介 b、详细解释其中的一些常见语句和语法。 a、.vimrc 文件是 Vim 编辑器用于配置用户设置和自定义行为的文件。当 Vim 启动时,它会读取 .vimrc 文件中的命令和设置,并根据这些指令来配置编辑器的行为。 b、.vimrc 文件中…...

c语言之函数指针作形参

在一些c语言的大工程中&#xff0c;会在定义的函数中&#xff0c;把一些其他函数指针作为本函数形参。 函数指针作形参的例子 代码如下: #include<stdio.h> int max(int a,int b) { return(a>b?a:b); } int min(int a,int b) { return(a<b?a:b); } i…...

python文件的读取操作

打开文件 fopen("F:/python/helloworld/测试.txt","r",encoding"UTF-8")读取文件 print(f"读取10个字节的结果{f.read(10)}") print(f"读取全部字节的结果{f.read()}") linesf.readlines() print(f"{lines}")读…...

查看并设定【网络适配器】的优先级(跃点数)

目录 前言&#xff1a; 1.查看所有的适配器 2.修改优先级&#xff08;需要以管理员身份运行&#xff09; 跃点数&#xff08;InterfaceMetric &#xff09; DHCP 3.修改后的效果 pwoerShell 再次运行之前的程序 4.其他 参考 网络适配器1&#xff0c;8相关知识介绍1 …...

深入理解 Hadoop 上的 Hive 查询执行流程

在 Hadoop 生态系统中&#xff0c;Hive 是一个重要的分支&#xff0c;它构建在 Hadoop 之上&#xff0c;提供了一个开源的数据仓库系统。它的主要功能是查询和分析存储在 Hadoop 文件中的大型数据集&#xff0c;包括结构化和半结构化数据。Hive 在数据查询、分析和汇总方面发挥…...

JS封装网页进入/退出全屏功能,兼容各大主流浏览器

1、演示 2、封装进入全屏函数 mozRequestFullScreen&#xff1a;兼容Firefox webkitRequestFullscreen&#xff1a;兼容 Chrome、Safari、Opera msRequestFullscreen&#xff1a;兼容&#xff1a;IE/Edge const enter () > {const element document.documentElementif (el…...

el-table的复选框勾选整行变色

要实现el-table的复选框勾选整行变色&#xff0c;你可以使用element-ui提供的row-class-name属性结合scoped slot来完成。 首先&#xff0c;你需要为el-table组件添加 row-class-name 属性&#xff0c;并给它绑定一个方法。在这个方法中&#xff0c;你可以根据你的业务逻辑来判…...

一步一步写线程之八线程池的完善之二数据结构封装

一、数据容器 在前面分析过&#xff0c;不管是线程任务的封装还是同步数据队列的封装&#xff0c;都是需要一个数据结构的。一用来说&#xff0c;如果没有什么特殊的原因&#xff0c;开发者都是使用STL中数据结构。比如前面经常见到的std::queue,std::deque,std::vector,std::…...

go连接数据库(原生)

根据官网文档 Go Wiki: SQL Database Drivers - The Go Programming Language 可以看到go可以连接的关系型数据库 ​ 常用的关系型数据库基本上都支持&#xff0c;下面以mysql为例 下载mysql驱动 打开上面的mysql链接 GitHub - go-sql-driver/mysql: Go MySQL Driver i…...

【C语言】2048小游戏【附源码】

欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 一、游戏描述&#xff1a; 2048是一款数字益智类游戏&#xff0c;玩家需要使用键盘控制数字方块的移动&#xff0c;合并相同数字的方块&#xff0c;最终达到数字方块上出现“2048”的目标。 每次移动操作&#xff0c;所…...

部署项目遇到的各种问题总结

文章目录 前言一、后端问题 jar包运行出现错误宝塔面板使用jdk17二、数据库问题 版本问题三、前端问题 连不上后端总结 前言 在做完项目之后&#xff0c;为了让别人访问到自己的网站&#xff0c;就需要部署前端后端以及数据库&#xff0c;但是在部署的过程中出现了各种问题和困…...

JavaSE:抽象类和接口

目录 一、前言 二、抽象类 &#xff08;一&#xff09;抽象类概念 &#xff08;二&#xff09;使用抽象类的注意事项 &#xff08;三&#xff09;抽象类的作用 三、接口 &#xff08;一&#xff09;接口概念 &#xff08;二&#xff09;接口语法规则 &#xff08;三&a…...

发票是扫码验真好,还是OCR后进行验真好?

随着科技的进步&#xff0c;电子发票的普及使得发票的验真方式也在不断演进。目前&#xff0c;我们常见的发票验真方式主要有两种&#xff1a;一种是扫描发票上的二维码进行验真&#xff0c;另一种是通过OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别…...

【AIGC调研系列】AIGC+Jmeter实现接口自动化测试脚本生成

AIGC&#xff08;人工智能生成内容&#xff09;结合JMeter实现接口自动化测试脚本生成的方法&#xff0c;主要涉及到通过流量收集工具和AIGC技术获取用户操作接口数据&#xff0c;并利用这些数据生成自动化测试脚本的过程。这种方法可以有效提高软件测试的效率和质量[1]。JMete…...

前端|babel升级

问题 项目不支持可选链调用过多的 babel 插件 步骤 基础包 dependencies “react-scripts”: “5.0.1” devDependencies “customize-cra”: “^1.0.0”,“react-app-rewired”: “^2.2.1”, 框架包 dependencies “react”: “16.13.1”,“react-dom”: “16.13.1”, …...

【微服务】spring状态机模式使用详解

一、前言 在很多系统中&#xff0c;通常会涉及到某个业务需要进行各种状态的切换操作&#xff0c;例如在审批流程场景下&#xff0c;某个审批的向下流转需要依赖于上一个状态的结束&#xff0c;再比如电商购物场景中&#xff0c;一个订单的生命周期往往伴随着不同的状态&#…...

【算法刷题day14】Leetcode:144.二叉树的前序遍历、94.二叉树的中序遍历、145.二叉树的后序遍历

文章目录 二叉树递归遍历解题思路代码总结 二叉树的迭代遍历解题思路代码总结 二叉树的统一迭代法解题思路代码总结 草稿图网站 java的Deque 二叉树递归遍历 题目&#xff1a; 144.二叉树的前序遍历 94.二叉树的中序遍历 145.二叉树的后序遍历 解析&#xff1a;代码随想录解析…...

mysql闲谈

如何定位慢查询 1、测试环境压测时&#xff0c;有的接口非常慢&#xff0c;响应时间超过2秒以上。当时系统部署了运维的监控系统Skywalking&#xff0c;在展示报表中可以看到是哪儿个接口慢&#xff0c;可以看到SQL具体执行时间。 2、如果没有类似的监控系统&#xff0c;在Mysq…...

物联网学习1、什么是 MQTT?

MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级、基于发布-订阅模式的消息传输协议&#xff0c;适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它在物联网应用中广受欢迎&#xff0c;能够实现传感器、执行器和其它设备之间的高效通…...

【机器学习】数据探索(Data Exploration)---数据质量和数据特征分析

一、引言 在机器学习项目中&#xff0c;数据探索是至关重要的一步。它不仅是模型构建的基础&#xff0c;还是确保模型性能稳定、预测准确的关键。数据探索的过程中&#xff0c;数据质量和数据特征分析占据了核心地位。数据质量直接关系到模型能否从数据中提取有效信息&#xff…...

软件测试(一)--简介+主流技能+分类+模型+流程

一、软件及测试简介 1、软件生产过程 需求产生–需求文档–设计效果图–产品开发–产品测试&#xff08;测试产品与需求文档是否一致&#xff09;–部署上线 2、什么是软件测试 使用技术手段验证软件是否满足使用需求。 技术包括&#xff1a;&#xff08;使用网络技术测试安…...

技术引领,策略升级:腾讯云与你共探数字金融新篇章

引言 2024 年 3 月 27 日下午&#xff0c;在北京腾讯总部&#xff0c;一场关于大模型与数据要素时代数字金融发展的深入讨论火热进行中。【TVP 走进腾讯&#xff1a;大模型与数据要素时代的数字金融发展论坛】是在腾讯二十年发展历程和数字化实践的基础上&#xff0c;进一步探索…...

数据库-root密码丢失的重置方案(win11环境)

当在windows系统中安装的mysql由于操作不当&#xff0c;或者密码遗忘&#xff0c;今天测试了一下&#xff0c;可以用以下方法重置root的密码。 mysqlwindows环境root密码重置问题 在win10/11环境下mysql8密码遗忘后的重置密码方案。 停止mysql服务 查找windows中的mysql服务名称…...

免试生常问的一些问题汇总---专升本学习篇

1.你怎么理解你申请的专业? 答:软件工程室一门涉及软件开发、维护和管理的工程学科。它结合了计算机科学、工程学和管理科学的原理,皆在通过系统化、规范化的方法来开发高质量的软件系统。 1.技术和支持 :软件工程包括编程语言、算法、数据结构、软件设计模式、软件测试、…...

FPGA的就业前景

FPGA&#xff08;Field-Programmable Gate Array&#xff09;技术在数字电路设计和嵌入式系统开发方面具有广泛的应用&#xff0c;因此在FPGA领域有着较好的就业前景。 目前&#xff0c;FPGA在通信、计算机、消费电子、汽车、航空航天等行业中得到了广泛应用。随着新一代通信网…...

7.阻塞模式与非阻塞模式

1.阻塞模式 一个线程来处理多个连接显得力不从心 accept等待连接 是一个阻塞方法 read读取SocketChannel中的数据 是一个阻塞方法 /*** 服务端* param args* throws IOException*/public static void main(String[] args) throws IOException {//建立一个缓冲区ByteBuffer b…...

wordpress 做论坛/百度刷自己网站的关键词

我试图写出一些文本&#xff0c;并在可能的情况下将其编码为utf-8&#xff0c;使用以下代码&#xff1a;outf.write((lang_name "," (script_name or "") "\n").encode("utf-8", errorsreplace))我得到以下错误&#xff1a;^{pr2}$…...

wordpress高级插件/网址域名大全2345网址

我们在学习linux时一般都是在文字界面下操作的&#xff0c;那有时需要进入到图形界面&#xff0c;但是系统在安装时&#xff0c;并没有安装图形界面包。今天我们来学习下Linux图形界面的安装卸载。以下操作前提需要配好本地YUM源。详见《Linux运维工程师的第十天(配置本地YUM源…...

资源下载类网站源码/网站排名提高

文章转自 https://www.cnblogs.com/shawWey/p/9981505.html 首先安装包资源&#xff1a; https://pan.baidu.com/s/1Jvkqe3WMgNQ3bn3ggYGhAQ \ 下面是Installation Manager安装包 agent.installer.linux.gtk.x86_64_1.8.5000.20160506_1125.zip 下面三个是支持所有平台的…...

上海 企业网站建设/网站分析工具

有两种观点&#xff0c;一种观点是必须备案&#xff0c;另外一种观点是无需备案&#xff0c;这两种说法都有片面性&#xff0c;具体来讲&#xff1a;1&#xff1a;百度已经官方声明过&#xff0c;未备案的域名&#xff0c;其网站在搜索引擎中的关键词排名不会受到影响&#xff…...

抖音排名优化/seo黑帽培训骗局

何时使用领域驱动设计转载自&#xff1a;https://www.cnblogs.com/daxnet/p/15177443.html何时使用领域驱动设计&#xff1f;其实当你的应用程序架构设计是面向业务的时候&#xff0c;你已经开始使用领域驱动设计了。领域驱动设计既不是架构风格&#xff08;Architecture Style…...

网站建设推广怎么做/网站流量统计分析的维度包括

原文链接&#xff1a;http://www.phpweblog.net/AngelLee2009/archive/2009/08/16/6848.html 1&#xff0e;什么是模式&#xff1f; 模式&#xff0c;即pattern。其实就是解决某一类问题的方法论。你把解决某类问题的方法总结归纳到理论高度&#xff0c;那就是模式。 Alexand…...