【git】如何快速准确的回退(revert)已经合并(merge)主分支(master)的新提交代码

embedded/2024/10/21 23:26:32/

文章目录

  • 前言
  • 一、merge模式
  • 二、回滚步骤
  • 总结


前言

我们在做一些需求,正常流程经过开发,测试到最后和代码上线。但是有时候就会发生一些小插曲,比如产品说老板说某某某你的代码要延后上线!!或者你写的不合格预发环境出问题了!!你都需要revert代码,回退成你merge之前的主分支。那么如何快速精准的做呢?

在这里插入图片描述


一、merge模式

一般在企业级开发在个人提merge时候,合并master都会使用git merge -on -ff这个方式去合并代码,原因是这样在merge代码之后,会将原先的master和新提交的branch合并为一个新的branch,让这个branch成为新的master的header。具体流程可以参考下图

请添加图片描述
举例子在gitee中我们可合并就可以选择合并分支 这个就是git merge -on -ff。而扁平化分支就是git merge。
在这里插入图片描述
通过sourcetree我们可以看到两者不同

在这里插入图片描述

二、回滚步骤

因为一般都会采用merge -on-ff合并所以只讲这种方式的回滚代码
1.新建一个reverse分支
2.查看git gragh找到回退合并
3.代码revert
接下来我来举个例子去解释如何回退。
比如接下来我要在我的项目中去revert调我刚刚merge过的分支test-git2024-10-19

项目链接:项目链接欢迎大家收藏一起进步

1.新建一个reverse分支

新建一个分支 reverse-test-git2024-10-19

git checkout {your branch}

在这里插入图片描述

2.调用git日志

git log

可以通过git log去观察但是效果并不明显
在这里插入图片描述

一般git gragh需要借助一些git 工具去查看,比如 sourcetree

在这里插入图片描述
可以看到提交那个就是mergeCommitId,而父级有两个都是commitId
找到这个提交和父级之后,就要开始reverse

3.代码reverse

通过上一步我们找到了merge的mergeCommitId和两个commitId,此时我们就需要知道我们希望保留那个commitId,这个commitId要是之前分支没合并过master的commitId

git revert {mergeCommitId} -m {保留的commitId,1 or 2}

在这里插入图片描述

revert成功,再次提交
在这里插入图片描述
在这里插入图片描述



总结

这样revert不仅快速而且不用手动修改代码,下次要是还需要merge,只需要去revert你revert掉的代码就可以了。


http://www.ppmy.cn/embedded/129392.html

相关文章

配电系统 无线测温装置组成架构分析

随着全球对电力需求的不断增长,现代配电系统面临着越来越高的安全性和效率要求。在这一背景下,无线测温系统的引入为配电系统的监测和管理带来了新的解决方案。无线测温系统通过实时监测设备的温度状态,帮助运维人员及时发现潜在问题&#xf…

AWS WAF实战指南:从入门到精通

1. 引言 Amazon Web Services (AWS) Web Application Firewall (WAF) 是一款强大的网络安全工具,用于保护Web应用程序免受常见的Web漏洞攻击。本文将带您从入门到精通,深入探讨AWS WAF的实际应用策略,并提供具体案例,帮助您更好地保护您的Web应用程序。 2. AWS WAF基础 …

安装好的 Nginx 增加 nginx-module-vts 模块

目录 1. nginx-module-vts 准备 2.查看已安装的的 nginx 编译参数 3. 重新编译 nginx 添加 nginx-module-vts 模块 4. 验证 1. nginx-module-vts 准备 # 解压 unzip nginx-module-vts-master.zip # 将解压包移动到/usr/local/目录 mv nginx-module-vts-master /usr/local/ …

HTml + CSS 核心笔记 (八)

项目目录 xtx-pc images 文件夹:存放固定使用的图片素材,例如:logo、样式修饰图等等 uploads 文件夹:存放非固定使用的图片素材,例如:商品图、宣传图需要上传的图片 iconfont 文件夹:字体图标…

[ACTF2020] 新生赛]Exec1

目录 0x01命令执行 [ACTF2020 新生赛]Exec1 1、解法1 2、解法2 3、总结 3.1php命令注入函数 3.2java命令注入函数 3.3常见管道符 0x02SQL注入 [极客大挑战 2019]EasySQL1 0x01命令执行 [ACTF2020 新生赛]Exec1 1、解法1 ping本地,有回显,TTL…

C++ 修饰符

1、explicit 关键字,用于修饰构造函数,防止构造函数隐式转换,用于增强代码明确性,提高代码可读性。 缺点:由于explicit关键字阻止了构造函数隐式转换,所以需要额外代码进行类型转换。 class MyClass { pu…

C07.L10.STL之队列

大家好,我是AC使者。 一、队列的介绍 队列是一种操作(或者说运算)受到限制的特殊线性表。其插入操作限定在表的一端进行,称为入队;其删除操作则限定在表的另一端进行,称为出队。插入一端称为队尾&#xf…

再Android10上实现检测AHD摄像头是否接入

项目有个需要,需要知道tp9951是否接入AHD摄像头 1,驱动层可以通过读取寄存器的值来检测是否接入AHD摄像头 tp9951_write_reg(0x40, 0x00); //select decoder page tp9951_write_reg(0x41, ch); val tp9951_read_reg(TP_INPUT_STATUS_REG);…