回滚代码

简介: 回滚代码

回滚代码和核心命令有两个,一个是 reset ,一个是 revert ,从术语上讲, reset 是用来 回退 版本, revert 是用来 还原 某次或某几次提交。


reset基本使用

常规流程:

微信截图_20221208103452.png


注意

保护分支是不允许强制推送的,尽管你是项目 owner 也不行!通常 masterdevelopment 等分支为保护分支,要想通过 reset 来回滚,需要先将其 unprotect ,之后再强制提交。


上述流程的简写形式为:

$ git reset --hard HEAD^    # 回到上个版本
$ git reset --hard HEAD^^   # 回到上上个版本点击复制复制失败已复制


reset 对提交记录的影响

使用 reset 来回退版本在效果上就像是删除了一些提交。


例如,在 master 分支上有如下提交:

42eae13 (HEAD -> master) 第四次修改
97ea0f9 第三次修改
e50b7c2 第二次修改
3a52650 第一次修改点击复制复制失败已复制


如果发现,在第四次修改有错误,使用 reset 命令回滚到第三次修改,这个时候提交历史变成了:

97ea0f9 (HEAD -> master) 第三次修改
e50b7c2 第二次修改
3a52650 第一次修改点击复制复制失败已复制


相当于我们删除了第四次修改的提交记录,(这里并不是物理删除,还是可以找回来的,具体命令可以查看git reflog


revert 基本使用

假设在 master 分支上有如下提交:

42eae13 (HEAD -> master) 第四次修改
97ea0f9 第三次修改
e50b7c2 第二次修改
3a52650 第一次修改点击复制复制失败已复制


第四次提交有一些问题,但是还有其他代码是不可放弃的,我们就需要用 revert 指令来保留第四次代码,同时恢复第三次修改。

$ git revert -n 97ea0f9
$ git commit -m "恢复第三次修改"点击复制复制失败已复制


此时的提交历史会变成:

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


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

目录
相关文章
|
安全 Linux 网络安全
组网神器WireGuard安装与配置教程(超详细)
组网神器WireGuard安装与配置教程(超详细)
36073 2
|
域名解析 负载均衡 架构师
Nginx极简入门(六)配置Nginx负载均衡,提高系统并发性能!
前面讲了如何配置Nginx虚拟主机、如何配置反向代理。Nginx最主要的功能就是反向代理和负载均衡。今天要说的是如何配置nginx和tomcat实现反向代理。
Nginx极简入门(六)配置Nginx负载均衡,提高系统并发性能!
|
缓存 负载均衡 前端开发
Nginx极简入门(九)Nginx实现动静分离!
前面介绍了Nginx的负载均衡,一般来说,都需要将动态资源和静态资源分开,这样可以很大程度的提升静态资源的访问速度,同时在开过程中也可以让前后端开发并行可以有效的提高开发时间,也可以有些的减少联调时间 。接下来介绍什么是动静分离以及如何使用Nginx实现动静分离。
Nginx极简入门(九)Nginx实现动静分离!
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之如何回滚版本
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
8月前
|
JavaScript
nodejs安装之npm ERR! code CERT_HAS_EXPIREDnpm ERR! errno CERT_HAS_EXPIRED reason: certificate has expired-证书错误通用问题解决方案-优雅草央千澈
nodejs安装之npm ERR! code CERT_HAS_EXPIREDnpm ERR! errno CERT_HAS_EXPIRED reason: certificate has expired-证书错误通用问题解决方案-优雅草央千澈
1320 27
|
10月前
|
Web App开发 JavaScript 前端开发
使用 Chrome 浏览器的内存分析工具来检测 JavaScript 中的内存泄漏
【10月更文挑战第25天】利用 Chrome 浏览器的内存分析工具,可以较为准确地检测 JavaScript 中的内存泄漏问题,并帮助我们找出潜在的泄漏点,以便采取相应的解决措施。
1179 9
|
11月前
|
前端开发 NoSQL Java
Sa-Token学习圣经:从入门到精通Sa-Token,成为 史上最全的权限设计专家
尼恩团队推出了一系列技术学习资料,帮助开发者提升技能,应对面试挑战。最近,有读者在面试一线互联网企业如得物、阿里、滴滴等时遇到了与SpringCloud工业级底座相关的面试题,特别是用户权限认证和单点登录的设计问题。为此,尼恩团队整理了《Sa-Token学习圣经》,从入门到精通,帮助大家系统化地掌握Sa-Token框架。
|
存储 Web App开发 JavaScript
构建基于Node.js的实时通信系统:技术详解
【5月更文挑战第22天】构建基于Node.js的实时通信系统,利用WebSocket协议和Socket.IO库实现全双工通信。系统采用Node.js作为服务器环境,处理高并发,结合WebSocket进行高效数据交换。Socket.IO提供WebSocket封装,保证兼容性。系统架构包括客户端(使用WebSocket连接服务器)、Node.js服务器(处理连接、消息、认证和数据存储)和数据库。开发流程包括环境搭建、服务器和客户端开发,最后部署测试。该系统可为在线聊天、视频会议等场景提供流畅交互体验,未来可优化性能和扩展性。
|
网络协议 Go
golang判断ip地址是ipv4还是ipv6
golang判断ip地址是ipv4还是ipv6
|
前端开发 Java 应用服务中间件
【Docker】部署若依项目——保姆级教程亲测
【Docker】部署若依项目——保姆级教程亲测
1685 0