git revert 用法实战:撤销一个 commit 或 merge

git revert

1 区别

• 常规的 commit (使用 git commit 提交的 commit)
• merge commit

2 首先构建场景

master上的代码
在这里插入图片描述
dev开发分支上,添加一个a标签,并commit这次提交
在这里插入图片描述
切到master上,再次进行改动和提交
在这里插入图片描述
将dev的代码合到master后,当前的分支图如下所示:

在这里插入图片描述
merge commit 和普通 commit 的不同之处在于:
merge commit 包含两个 parent commit,代表该 merge commit 是从这两个 commit 合并过来的

使用 git log 查看历史提交记录

在这里插入图片描述

也可以使用git show查看这个merge的详细信息

在这里插入图片描述

这代表该 merge commit 是从 81eb85d 和 eod12f6 两个 commit 合并过来的

而常规的 commit 则没有 Merge 行

在这里插入图片描述

3 revert 常规 commit

使用 git revert 即可(commit id是希望删除的Commit ID值)
git 会生成一个新的 commit,会将将定的 commit 内容从当前分支上撤除。

在这里插入图片描述

4 revert merge commit

在这里插入图片描述
但如果直接使用 git revert ,git 也不知道到底要撤除哪一条分支上的内容
这时需要指定一个"主线",主线的内容将会保留,而另一条分支的内容将被 revert

从前面git show的命令中,可以看到,merge commit 的 parent 分别为
• 81eb85d(代表master分支)
• eod12f6(代表dev分支)
在这里插入图片描述
在这里插入图片描述
我们需要保留master分支的内容(主线),将dev分支的内容移除,操作如下:

git revert -m <主线> <commit ID>
git revert -m 1 c0702d261f7be5e93d1b6646d91bec9dabde2a19

因为左边的第一个(81eb85d)式主线,所以,主线为1

代码去掉了上次合并内容:
在这里插入图片描述
分支图如下:

在这里插入图片描述

5 revert之后的重新合并

假设A在自己分支dev上开发功能,并合并到了master,之后 master 上又提交了一个修改 g,这时提交历史如下:

在这里插入图片描述

突然大家发现A的分支存在严重的bug,需要revert掉,于是就把这次合并revert掉了,记为H

在这里插入图片描述

然后A回到自己的分支dev上,修改好了bug,直觉上只需要再次merge到master了就可以,像这样

在这里插入图片描述
但是这不能得到期望的结果,这样合并的结果,并不会包含 c、d的代码,只有 i 的代码 (因为 c 和 d 两个提交曾经被丢弃过)

所以,如果想恢复整个dev分支 所做的修改,应该先把 H revert 掉:

在这里插入图片描述

其中 H" 是对 H 的 revert 操作生成的新 commit,把之前撤销合并时丢弃的代码恢复了回来,然后再 merge 佳怡的分支dev,就可以把解决 bug 写的新代码合并到 master 分支

6 git reset 和 git revert区别

revert再当前版本的基础上新增一个版本,不影响以前的代码在版本四想要回退时在这里插入图片描述
reset该命令会强行覆盖当前版本和要回退的版本之间的其他版本(不太建议)在版本四想要回退时在这里插入图片描述

希望去掉最新的一次commit

在这里插入图片描述

分支图如下,

在这里插入图片描述
git log 查看历史记录

在这里插入图片描述
执行:git reset a7961ff9760e49e5736f7b43794f44ed18b09ce5
从分支图上,可以看到最新的commit记录会被强行覆盖而失去了

在这里插入图片描述
上一次修改的内容,会变成待提交的状态

在这里插入图片描述

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

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

相关文章

自然语言处理|高效法律助手:AI如何解析合同条款?

引言&#xff1a;法律 AI 的崛起 在数字化浪潮快速发展的今天&#xff0c;人工智能&#xff08;AI&#xff09;已不再是一个陌生的概念&#xff0c;它正以快速发展渗透到各个领域&#xff0c;法律行业也不例外。从智能合同审查到法律风险预测&#xff0c;AI 技术为法律工作带来…

【数据分享】2000—2024年我国乡镇的逐年归一化植被指数(NDVI)数据(年最大值/Shp/Excel格式)

之前我们分享过2000-2024年我国逐年的归一化植被指数&#xff08;NDVI&#xff09;栅格数据&#xff0c;该逐年数据是取的当年月归一化植被指数&#xff08;NDVI&#xff09;的年最大值&#xff01;另外&#xff0c;我们基于此年度栅格数据按照行政区划取平均值&#xff0c;得到…

办公网络健康监控(域名健康监控)

需求 办公室访问一些网络经常出现故障 现需要时时观察监控这些网络的健康 包含专线网等其他网络 实施 支持 SNMP 且支持 Webhook 发送报警的开源监控系统 hertzbeat:关系型数据库+时序数据库; Zabbix:关系型数据库; LibreNMS:关系型数据库; Prometheus(包含ale…

蓝桥杯 合并数列

问题描述 小明发现有很多方案可以把一个很大的正整数拆成若干个正整数的和。他采用了其中两种方案&#xff0c;分别将它们列为两个数组&#xff1a; {a₁, a₂, ..., aₙ}{b₁, b₂, ..., bₘ} 两个数组的元素和相同。 定义一次合并操作为&#xff1a;将某个数组中相邻的两…

【行驶证识别】批量咕嘎OCR识别行驶证照片复印件图片里的文字信息保存表格或改名字,基于QT和腾讯云api_ocr的实现方式

项目背景 在许多业务场景中,如物流管理、车辆租赁、保险理赔等,常常需要处理大量的行驶证照片复印件。手动录入行驶证上的文字信息,像车主姓名、车辆型号、车牌号码等,不仅效率低下,还容易出现人为错误。借助 OCR(光学字符识别)技术,能够自动识别行驶证图片中的文字信…

个人学习编程(3-29) leetcode刷题

最后一个单词的长度&#xff1a; 思路&#xff1a;跳过末尾的空格&#xff0c;可以从后向前遍历 然后再利用 while(i>0 && s[i] ! ) 可以得到字符串的长度&#xff0c; int lengthOfLastWord(char* s) {int length 0;int i strlen(s) - 1; //从字符串末尾开始//…

PAT甲级(Advanced Level) Practice 1028 List Sorting

原题 1028 List Sorting - PAT (Advanced Level) Practice 题目大意 输入n个学生的id、姓名、分数&#xff0c;再输入C表示对C列进行排序。 id&#xff1a;从小到大排 姓名&#xff1a;姓名不同时从小到大排&#xff0c;相同时id从小到大排 分数&#xff1a;不同时从小到…

UE4学习笔记 FPS游戏制作20 重写机器人和玩家死亡 切换相机和模型

定义父类中的死亡方法 在父类中定义OnDie方法&#xff0c;不需要实现&#xff0c;由子类实现各自的死亡逻辑 新建一个Die方法&#xff0c;处理公共的死亡逻辑 Die的实现&#xff1a; 以前的分离控制现在要延迟做&#xff0c;如果分离了控制器&#xff0c;就无法再获取到玩家的…

Linux信号的诞生与归宿:内核如何管理信号的生成、阻塞和递达?

个人主页&#xff1a;敲上瘾-CSDN博客 个人专栏&#xff1a;Linux学习、游戏、数据结构、c语言基础、c学习、算法 目录 一、认识信号 二、信号的产生 1.键盘输入 2.系统调用 3.系统指令 4.硬件异常 5.软件条件 三、信号的保存 1.block 2.pending 3.handler 四、信号…

DeepSeek API集成开发指南——Flask示例实践

DeepSeek API集成开发指南——Flask示例实践 序言&#xff1a;智能化开发新范式 DeepSeek API提供了覆盖自然语言处理、代码生成等多领域的先进AI能力。本文将以一个功能完备的Flask示例系统为载体&#xff0c;详解API的集成方法与最佳实践。通过本案例&#xff0c;开发者可快…

Linux环境下安装部署Docker

windows下连接Linux&#xff1a; 打开终端&#xff1a; //ssh远程连接 ssh root192.168.xx.xx//输入账号密码 root192.168.xx.xxs password: ssh连接成功&#xff01; 安装Docker&#xff1a; //安装Docker yum install -y yum-utils device-mapper-persistent-data lvm2 …

开源CDN产品-GoEdge

一、背景 上篇文章分析了一下CDN的基本原理以及使用代码实现了一个乞丐版的智能DNS调度器。从整个例子我们可以清晰了解到CDN原理&#xff0c;也就那么回事。 但是&#xff0c;之前也讲过了&#xff0c;CDN产品融合的技术比较杂、也比较多。所以我就想着&#xff0c;万物皆有开…

正则表达式-万能表达式

1、正则 正则表达式是一组由字母和符号组成的特殊文本, 它可以用来从文本中找 出满足你想要的格式的句子. {“basketId”: 0, “count”: 1, “prodId”: #prodId#, “shopId”: 1, “skuId”: #skuId#} #prodId# re相关的文章&#xff1a; https://www.cnblogs.com/Simple-S…

javaWeb Router

一、路由简介 1、什么是路由&#xff1f; - 定义&#xff1a;路由就是根据不同的 URL 地址展示不同的内容或页面。 - 通俗理解&#xff1a;路由就像是一个地图&#xff0c;我们要去不同的地方&#xff0c;需要通过不同的路线进行导航。 2、路由的作用 - 单页应用程序…

【前端】使用 HTML、CSS 和 JavaScript 创建一个数字时钟和搜索功能的网页

文章目录 ⭐前言⭐一、项目结构⭐二、HTML 结构⭐三、CSS 样式⭐四、JavaScript 功能⭐五、运行效果⭐总结 标题详情作者JosieBook头衔CSDN博客专家资格、阿里云社区专家博主、软件设计工程师博客内容开源、框架、软件工程、全栈&#xff08;,NET/Java/Python/C&#xff09;、数…

聚焦应用常用功能,提升用户体验与分发效率

随着HarmonyOS应用的持续发展&#xff0c;应用的功能将越来越丰富&#xff0c;实际上80%的用户使用时长都会集中在20%的特性上&#xff0c;其余的功能可能也仅仅是面向部分用户。 用户在下载应用时&#xff0c;如果应用包含大量的功能和资源&#xff0c;可能会导致下载时间过长…

OCR 识别案例

OCR 识别案例 注意点&#xff1a;输入图像尺寸比例尽量和参与模型训练的数据集比例相似&#xff0c;识别效果会更好。 1、pytesseract Pytesseract是一个Python的光学字符识别&#xff08;OCR&#xff09;工具&#xff0c;它作为Tesseract OCR引擎的封装&#xff0c;允许你在…

IP大洗牌ipv6强势来袭!!!【ipv6配置及应用】

前言 随着时代的发展&#xff0c;IPv4&#xff08;互联网协议第四版&#xff09;已逐渐无法满足全球互联网爆炸式增长的需求。自20世纪80年代诞生以来&#xff0c;IPv4凭借其简洁的架构和约43亿的地址容量&#xff0c;支撑了互联网的早期扩张。然而&#xff0c;在移动互联网、物…

OpenAI 推出图像生成新突破:GPT-4o 实现图像编辑对话化

关键要点 OpenAI 推出了 4o 图像生成功能&#xff0c;集成于 GPT-4o&#xff0c;提供精准且逼真的图像生成。 它似乎适用于多种用户&#xff0c;包括免费用户&#xff0c;API 访问预计几周内推出。 安全措施包括 C2PA 元数据和内容屏蔽&#xff0c;限制生成不适当图像。 研究…

如何快速对比两个不同的excel文件中的单元格的数据是否完全相同 并把不同的单元格的背景颜色更改为红色?

要快速对比两个不同的Excel文件中的单元格数据是否完全相同&#xff0c;并将不同的单元格背景颜色更改为红色&#xff0c;可以使用Excel的以下几种方法&#xff1a; 方法一&#xff1a;使用条件格式 打开两个Excel文件。将一个文件的内容复制到另一个文件的新工作表中&#x…