git代码回滚是使用reset还是revert

news2024/12/28 5:37:11

时光不能回退,Git却允许我们改变历史。

想要让Git回退历史,有以下步骤:

使用git log命令,查看分支提交历史,确认需要回退的版本
使用git reset --hard commit_id命令,进行版本回退
使用git push origin命令,推送至远程分支

快捷命令:

回退上个版本:git reset --hard HEAD^ 

【注:HEAD是指向当前版本的指针,HEAD^表示上个版本,HEAD^^表示上上个版本】

如果修改到的文件比较少,我们可以不通过命令回滚的方式,手动删除之前的修改,再进行提交。

reset与revert区别

reset和revert都可以用来回滚代码。但他们是有区别的,准确来说,reset是用来"回退"版本,而revert是用来"还原"某次或者某几次提交。

举个例子,比如在master分支,有以下提交历史:

42eae13 (HEAD -> master) 第四次修改
97ea0f9 第三次修改
e50b7c2 第二次修改
3a52650 第一次修改

可以看到,master最新版本为第四次修改。

如果发现,在第四次修改有错误,需要回滚到第三次修改,就可以用reset命令来回退。

执行 git reset --hard 97ea0f9,这个时候,git的提交历史变为:

97ea0f9 (HEAD -> master) 第三次修改
e50b7c2 第二次修改
3a52650 第一次修改

可以看到master当前指向97ea0f9这个版本,我们回到了第三次修改。

使用reset命令,Git会把要回退版本之后提交的修改都删除掉。要从第四次修改回退到第一次修改,那么会删除第二、三、四次的修改。【注:这里并不是真正的物理删除】

那如果发现第三次修改有错误,想要恢复第三次修改,却要保留第四次修改呢?

这个时候就可以用revert命令:

git revert -n 97ea0f9
git commit -m "恢复第三次修改"

Git提交历史会变成:

33b8b30 (HEAD -> master) Revert "恢复第三次修改"
42eae13 第四次修改
97ea0f9 第三次修改
e50b7c2 第二次修改
3a52650 第一次修改

实际上,Git把第三次修改从提交中剔除(还原)了,还保留了第四次修改,并且产生了新的commit_id。

在实际生产环境中,代码是基于master分支发布到线上的,会有多人进行提交。可能会碰到自己或团队其他成员开发的某个功能在上线之后有Bug,需要及时做代码回滚的操作。

在确认要回滚的版本之后,如果别人没有最新提交,那么就可以直接用reset命令进行版本回退,否则,就可以考虑使用revert命令进行还原修改,不能影响到别人的提交。

使用reset还是revert,需要考虑实际的适用场景,没有绝对化。

上面提的并不是真正的物理删除,是因为Git会把分支的每次修改记录都会保留下来,比如有某次的commit,某次的reset等。而使用git reflog show命令,可以查看完整的提交历史,

只要有commit_id,我们就能恢复任意版本的代码,在各版本之间来回穿梭。

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

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

相关文章

不需要策略模式也能避免满屏if/else

满屏if/else java 复制代码 public static void main(String[] args) { int a 1; if(a 1){ System.out.println("执行a1的逻辑"); }else if (a 2){ System.out.println("执行a2的逻辑"); }else if (a 3){ System.out.println("执行a3的逻辑&quo…

基于apache paimon实时数仓全增量一体实时入湖

用例简介 Apache Paimon(以下简称 Paimon)作为支持实时更新的高性能湖存储,本用例展示了在千万数据规模下使用全量 增量一体化同步 MySQL 订单表到 Paimon明细表、下游计算聚合及持续消费更新的能力。整体流程如下图所示,其中 …

R语言实践——rWCVP:世界维管植物名录的R包

rWCVP:世界维管植物名录的R包 介绍1. 参照github安装与简单例子1.1 安装rWCVP1.2 安装rWCVPdata1.3 github的例子 2. rWCVP原始文献阅读2.1 前言(背景)2.2 功能概要2.2.1 名称匹配(wcvp_match_names(), wcvp_match_exact(), wcvp …

ChatGPT:你真的了解网络安全吗?浅谈攻击防御进行时之网络安全新定义

ChatGPT:你真的了解网络安全吗?浅谈网络安全攻击防御进行时 网络安全新定义总结 ChatGPT(全名:Chat Generative Pre-trained Transformer),美国OpenAI 研发的聊天机器人程序,是人工智能技术驱动…

在字节跳动做了6年测试,5月无情被辞,想给划水的兄弟提个醒

先简单交代一下背景吧,某不知名 985 的本硕,17 年毕业加入字节,以“人员优化”的名义无情被裁员,之后跳槽到了有赞,一直从事软件测试的工作。之前没有实习经历,算是6年的工作经验吧。 这6年之间完成了一次…

API接口测试—详情版(拼多多根据ID取商品详情)

一、为什么要做接口测试 做接口测试的原因主要有以下几个方面: 1. 确保接口功能正确性:接口是不同软件系统或者不同模块之间的数据传输和交互的通道,通过接口测试能够确保不同系统或者模块之间传递的信息准确无误,从而保证了整个…

微信小程序点击icon实现分享功能

1.小程序分享功能实现方式 小程序分享功能有两种方式,监听用户点击页面内转发按钮( 组件 open-type“share”)或右上角菜单“转发”按钮的行为,并自定义转发内容。 使用微信小程序的分享功能需要定义onShareAppMessage(Object obj…

Java基础 变量与数据类型

变量 为什么需要变量 一花一世界,如果把一个程序看做一个世界或一个社会的话,那么变量就是程 序世界的花花草草、万事万物。即,变量是程序中不可或缺的组成单位,最基 本的存储单元。 初识变量 变量的概念 内存中的一个存储区域…

工作几年,涨薪4K遭拒,后一天我就裸辞走了···

19年7月大学毕业,当时学的计算机科学专业。因为考研之后,秋招结束了。也没什么更多的岗位选择,就想着找个工作先干着,刚好有个亲戚在一家大厂公司上班说要招测试,所以就来做测试了。 虽然都是属于计算机大类&#xff0…

chatgpt赋能Python-python_nor

了解Python NOR 在Python编程语言中,NOR运算是一种逻辑运算符,用于反转两个变量的逻辑值。它是布尔运算中的一种,通常用于检查两个条件是否都不成立。 NOR运算有两个输入和一个输出,当输入为空或两个输入都为False时&#xff0c…

nuxt视频播放(踩坑)

展示效果: nuxt样例视频 1.安装vue-video-player插件 ①执行命令 npm i vue-video-player 或者 npm i vue-video-player5.0.2 后者直接安装对应版本号的插件 ②安装完之后 执行npm i ③安装不对应的版本会报错 ④注意安装版本 不是vue3.0的 请安装(“v…

【nginx】同一接口有时返回500(client_body_temp)

问题描述: 同一个接口,有能正常访问并返回的,有的访问未到服务器直接返回500。 查看nginx日志(error.log),发现open() "/nginx/client_body_temp/0000476534" failed (13: Permission denied)报…

java的URL类

文章目录 1. 简介2. 创建URL3. 从URL获取数据4. 分解URL5. 相等性和比较 1. 简介 java.net.URL类是对统一资源定位符的抽象。它扩展了Object类,是一个final类,不能对其派生子类。它不依赖于继承来配置不同的URL实例,而使用了策略设计模式&am…

VivadoIO约束

VivadoIO约束 FPGA开发离不开IO约束和时序约束,IO约束用于确定输入/输出端口的物理端口和电气特性,与芯片和电路设计有关。而时序约束则用于设定FPGA设计中的时序特性,以确保系统能够在预期时钟频率下正常运行。本文将介绍vivado中常见的设置…

编码踩坑——Redis Pipeline中调用Lua脚本报错JedisMoveDataException的问题 / Lua脚本常遇到的问题

本篇记录使用Redis Pipeline时,调用redis.clients.jedis.PipelineBase#eval时,报错JedisMoveDataException的问题;通过查看源码发现问题的原因,通过jedis在Github的issue了解了解决方案;涉及知识:Redis slo…

FP独立站支付问题你还没解决?out了!

目前FP独立站是很多跨境卖家的变现方式,但是这类外贸电商会遇到一些收款问题,这些问题很容易就让卖家的资金被冻结、账号被风控、关联账号被限制,损失真是不小。那FP卖家的收款问题该怎么解决呢?往下看。 一、FP独立站常见收款方式…

抖音账号运营技巧,让你的短视频更火爆

抖音是目前最火爆的短视频平台之一,拥有着庞大的用户群体和广阔的市场前景。在这个平台上,每天都有大量的用户在发布自己的短视频内容,让自己的账号脱颖而出并吸引更多的粉丝,成为每个用户所追求的目标。下面就来介绍一些抖音账号…

新用户如何选择WMS仓储管理系统解决方案

引言:随着现代化物流技术的不断发展,WMS仓储管理系统已成为企业管理的重要工具。一款合适的WMS系统可以帮助企业提高库存管理效率、减少库存成本、提升物流服务质量。对于初学者来说,如何选择适合自己的WMS系统,往往是一项挑战。本…

如何做好app的测试工作?一文6个步骤到你秒变APP测试高手

先说结论: 想要做好 APP 的测试工作, 离不开相对完整的测试要点! 本篇文章不仅有完整的App测试介绍,还有相对完整的App测试视频分享。 闲话少叙, 咱们直奔主题, APP 应用测试应该主要包含以下几个方面的测试要点: 需要注意的是: APP 应用测试是个相对繁杂的测试类…

电脑远程连接软件推荐

您可以考虑使用多种可靠的计算机远程连接软件选项来远程连接和控制计算机。 以下是一些流行的选项: TeamViewer TeamViewer 是一种广泛使用的远程访问软件,以其易用性和跨平台兼容性而闻名。 它提供远程控制、文件传输和桌面共享等功能。 TeamViewer 通…