如何利用IDEA将Git分支代码回退到指定历史版本

一、背景

作为一名后端开发,相信大家一定遇到过这样的情景,代码开发人员过多,并且开发分支过多,导致代码版本管理困难,这样就难免遇到一些代码合并出错,比如,当我提交了本次修改到本地和远程分支后,发现我本次提交还少了一些修改内容,或者说本次修改是完全错误的,或者说合并错了分支,然而也push到远程仓库去了。这种情况下该如何回退?

二、问题

已经提交到仓库(本地和远程仓库)的内容如何利用IDEA回退到指定版本?

三、方法及区别

  • Revert操作:Revert操作会当成一个新的提交记录,追加到提交日志当中,这样便保留了原来的提交记录。(推荐)

  • 利用IDEA的Reset Head指针:Reset Head指针,会抛弃原来的提交记录,使Head指针强制指向指定的版本。

四、实验环境

在这里插入图片描述
上图中,假设master分支是生产分支,dev_wyh分支是开发分支,现在将dev_wyh分支的代码推送到master分支,如下图所示:
在这里插入图片描述
假设此时我们发现代码合错了,需要将master分支代码回退到合并之前的版本,即Git信息为第一次:推送处,接下来我们可以用上面的两种方法去回退。

本次实验环境未必和您的情况完全相符,不过大致思路是相同的。如果您在解决问题过程中遇到冲突,解决就好了。

五、解决方法

方法1:Revert操作

当在版本第一次:推送基础上进行修改内容,并提交本地、远程仓库后,发现提交的内容不是我想要的,或者是完全错误的,需要回退到版本第一次:推送
1、在想要回退历史版本上单击鼠标右键,选择Revert Commit(见下图)
在这里插入图片描述
2、这时弹出冲突对话框,双击冲突文件或点MERGE以解决冲突。(见下图)
在这里插入图片描述
3、在解决冲突对话框中,决定最终的版本文件。(见下图)
在这里插入图片描述
4、填写提交信息并提交。(见下图)
在这里插入图片描述
5、同步提交到远程仓库(见下图)
在这里插入图片描述
这种回退的好处在于,如果后悔了“回退”这个操作,也可以回退到没有回退之前的版本。因为历史记录还保留提交记录。

方法2:Reset Head指针

当在版本第一次:推送基础上进行修改内容,并提交本地、远程仓库后,发现提交的内容不是我想要的,或者是完全错误的,需要回退到版本第一次:推送
1、在想要回退历史版本上单击鼠标右键,选择Reset Current Branch to Here...(见下图)
在这里插入图片描述
2、在弹出的git reset 参数类型选择框中,选择Hard(见下图),并RESET
在这里插入图片描述
3、本地仓库回退到了第一次:推送,需要同步远程仓库,执行push操作。
在这里插入图片描述
4、此时本地master分支代码已经回退,但无法推送到远程master分支,如果用命令行git push后,提示Push拒绝。打开Terminal,在本项目目录下,输入git push -f 强制同步远程仓库。
在这里插入图片描述
5、代码成功回退,同步后,会发现git日志丢失了版本1以后的提交。。(如下图)
在这里插入图片描述

六、总结

  • Revert操作其实就是回退操作,默认是回退到最近一次提交点,也可以回退到指定提交点,就像本次实验演示的。
  • Revert的操作其实也是设置Head指针。
  • 其实比较推荐Revert操作,毕竟可以后悔。方法2中git push -f 强制同步操作并不推荐使用,在团队协作环境中可能会引发问题。
  • 在方法2中,选择git reset参数选择的是hard,这种参数适合场景是我只想回退到指定版本的文本。工作区里的内容可以放弃,版本2完全放弃。其实也可以选择Mixed。Mixed作用是在设置Head指针时,保留当前工作区里的文本内容。这样方便直接修改,适合于提交的内容有误,只想修正回来就可以了这种情况。(对比效果见下图)
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

  • 在回退过程中,可能您的情况不会像本实验那么简单,也就是说会出现冲突情况。那么只需要解决冲突即可。

七、总结

除了Hard和Mixed选项,其它回退选项的效果讲解可以去查阅这篇博文:IDEA Git Reset 选项说明

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

jsp页面调试

现象: 访问jsp页面, 页面为空, 网络请求显示失败, 控制台打印错误net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 分析: 错误描述:编码模块不完整,返回浏览器的流不完整 可能得原因: 1、网络是否稳定 2、服务器端是否有对响应数据做限制,比如…

photoshop矫正扫描图片的倾斜问题以及修改图片内容

由于工程原因,资料需要重新梳理 1.扫描工程表格到电脑中 2.在ps中导入表格内容(表格有时候是倾斜的) 需要修正为正常状态,即垂直状态 设置步骤: 1.调整ps的背景颜色与所在图片的背景颜色一致 用吸管工具&#xff…

【thingsboard+NodeRed+chirpstack】实现Lora节点设备的数据上下行通讯

本文主要实现基于 thingsboard+NodeRed+chirpstack 实现 lora设备的数据上下行通讯。 NodeRed作为mqtt桥接器,在开源的社区版 thingsboard上实现 这里写目录标题 LoRa 设备上下行通讯方案数据上行数据下行Device 层面创建设备时,要添加 relation规则链层面灯控模块规则链规则…

Sentinel降级规则

1.降级规则简介 官方文档 熔断降级概述 除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。一个服务常常会调用别的模块,可能是另外的一个远程服务、数据库,或者第三方 API 等。例如,支付的…

华为OD机试之处理器问题(Java源码)

处理器问题 题目描述 某公司研发了一款高性能AI处理器。每台物理设备具备8颗AI处理器,编号分别为0、1、2、3、4、5、6、7。 编号0-3的处理器处于同一个链路中,编号4-7的处理器处于另外一个链路中,不通链路中的处理器不能通信。 如下图所示。…

基于html+css的图展示97

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

安装Arch Linux后要做的十件事

Arch Linux 是一款轻量级、灵活且高度可定制的Linux发行版,被广泛用于个人电脑和服务器。一旦您成功安装了Arch Linux,接下来有一些重要的任务需要完成,以确保系统的稳定性和安全性,并为您的需求做好准备。 本文将详细介绍安装Ar…

【Android】配置不同的开发和生产环境

目录 前言 配置build.gradle(Module级别) 创建对应环境的目录 切换不同环境 ​编辑选择打包的环境 前言 在web开发中不同的环境对应的配置不一样,比如开发环境的url是这样,测试环境的url是那样的,在app中也会涉…

jdk15至17——sealed密封关键字

sealed关键字是从jdk15开始预览,直到jdk17成为正式版,可以对继承父类和实现接口进行更加细粒度的限制,之前的限制也只有final用于禁止继承,默认包权限限制在同一个包内,sealed密封类/接口可以明确指定哪些类可以进行继…

通过Python的PIL库给图片添加马赛克

文章目录 前言一、Pillow是什么?二、安装PIL库三、查看PIL库版本四、使用方法1.引入库2.定义图片路径3.打开需要打马赛克的图片4.获取图片尺寸5.创建一个新的图片对象6.定义块的宽高7.循环遍历图片中的每个块进行处理8.保存马赛克图片9.效果 总结 前言 大家好&#…

客服配置-shopro

客服配置 注意事项 shopro客服系统 采用 workerman 的 gateway-worker 作为服务基础,请先安装 gateway-worker 扩展包shopro商城 已不再支持 workerman 在线客服插件 安装部署 安装扩展包 composer require workerman/gateway-worker:~3.0 删除禁用函数(如有未列…

C Primer Plus第十二章编程练习答案

学完C语言之后,我就去阅读《C Primer Plus》这本经典的C语言书籍,对每一章的编程练习题都做了相关的解答,仅仅代表着我个人的解答思路,如有错误,请各位大佬帮忙点出! 1.不使用全局变量,重写程序…

idea使用Alibaba Cloud Toolkit插件远程操作Docker

idea使用Alibaba Cloud Toolkit插件远程操作Docker 文章目录 前言一、tcp://IP:2375或者Unix socket 连接Docker(不安全)问题1:为什么本地虚拟机能连上,xxx云ECS服务器连不上?问题2:什么是Unix域套接字?有什么作用&…

Linux之创建进程、查看进程、进程的状态以及进程的优先级

文章目录 前言一、初识fork1.演示2.介绍3.将子进程与父进程执行的任务分离4.多进程并行 二、进程的状态1.进程的状态都有哪些?2.查看进程的状态2.运行(R)3.阻塞4.僵尸进程(Z)1.僵尸状态概念2.为什么要有僵尸状态&#…

伺服系统使用S曲线

在之前文章《S形曲线规划方式汇总》 介绍过贝塞尔曲线方式,并且在Marlin开源工程中也有贝塞尔曲线步进系统的实现方式。本篇介绍伺服系统中基于时间分割法实现的贝塞尔S曲线。 1 贝塞尔曲线路程规划 上文中推导过贝塞尔曲线,本文直接用结论&#xff1a…

OFGF光流引导特征:用于视频动作识别的快速且稳健的运动表示【含源码】

论文地址:https://openaccess.thecvf.com/content_cvpr_2018/papers/Sun_Optical_Flow_Guided_CVPR_2018_paper.pdf 这个 repo 包含论文的实现代码: Optical Flow Guided Feature: A Fast and Robust Motion Representation for Video Action Recognition,Shuyang Sun,Zh…

TCO-PEG-Thiol,反式环辛烯聚乙二醇巯基,具有末端硫醇基团的双功能TCO PEG衍生物

产品描述: TCO PEG Thiol是具有末端硫醇基团的双功能TCO PEG衍生物。TCO(反式环辛烯)基团与四嗪基团快速有效地反应,而硫醇(巯基)可用于与马来酰亚胺反应,与金表面结合并参与许多其他反应。 TC…

医疗IT系统安科瑞隔离电源装置在医院的应用

【摘要】介绍该三级综合医院采用安科瑞隔离电源系统5件套,使用落地式配电柜安装方式,从而实现将TN系统转化为IT系统,以及系统绝缘情况监测。 【关键词】医用隔离电源系统;IT系统;绝缘情况监测;三级综合医院…

Java版本企业电子招投标采购系统源码之项目说明和开发类型源码

项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及…

办公OA系统性能分析案例

前言 信息中心老师反应,用户反馈办公系统有访问慢的情况,需要通过流量分析系统来了解系统的运行情况,此报告专门针对系统的性能数据做了分析。 信息中心已部署NetInside流量分析系统,使用流量分析系统提供实时和历史原始流量&am…