IDEA中Git版本回退终极指南:Reset与Revert双方案详解
目录
- 前言
- 一、版本回退前置知识
- 二、Reset方案:整体改写历史
- 1、IDEA图形化操作(推荐)
- 1.1、查看提交历史
- 1.2、选择目标版本
- 1.3、选择回退模式
- 1.3.1、Soft(推荐)
- 1.3.2、Mixed
- 1.3.3、Hard(慎用)
- 1.3.4、Keep
- 1.4、强制推送远程仓库
- 2、命令行操作
- 2.1、查看提交记录
- 2.2、执行回退
- 2.3、强制同步远程
- 三、Revert方案:部分撤销提交
- 1、IDEA图形化操作
- 1.1、撤销目标提交
- 1.2、提交新版本
- 2、命令行操作
- 总结
前言
作为开发者,代码版本回退
是日常高频操作。IntelliJ IDEA
集成了强大的Git工具链,但面对reset
和revert
两种核心回退方案,许多开发者仍存在选择困惑。本文将解析Reset与Revert两种方案的操作细节及避坑指南。
一、版本回退前置知识
在操作前需明确三个核心概念:工作区 vs 暂存区 vs 仓库
区域 | 本质 | 操作指令 | 场景举例 |
---|---|---|---|
工作区 | 你正在编辑的代码文件 | 直接修改文件 | 在 UserService.java 中新增代码 |
暂存区 | 已标记待提交的修改 | git add | 将 UserService.java 添加到提交队列 |
仓库 | 已永久保存的历史版本 | git commit | 生成一个版本号为 a1b2c3d 的提交 |
二、Reset方案:整体改写历史
通过移动HEAD指针直接回退到目标版本,会删除后续提交记录
,适用于本地或需强制同步远程的场景。
1、IDEA图形化操作(推荐)
1.1、查看提交历史
右键项目 → Git → Show History
,或在Log标签页查看所有提交记录。
1.2、选择目标版本
右键要回退的提交 → Reset Current Branch to Here
(将当前分支重置到此处)。
1.3、选择回退模式
单击如上将当前分支重置到此处就会弹窗如下。
解析每个选项前先看下当前项目在所有状态的文件
好,四种状态文件已经准备完成,开始展示
1.3.1、Soft(推荐)
选择Soft回退后,仅移动HEAD指针,所有文件内容没变化
。Test1变为修改状态,后续push远程版本回退后,可以选择第一次和第二次的修改内容是否再次提交到远程仓库。
1.3.2、Mixed
选择Mixed回退后,所有文件内容没变化
(与Soft一样),只是将暂存区Test3移除到工作区
,这样看来Soft和Mixed的区别就是清空暂存区。
1.3.3、Hard(慎用)
选择Hard回退后,文件内容被还原为第一次提交的状态
(Test1第二三提交内容和Test3没提交的内容丢失了),然后暂存区的整个文件Test3丢失(没有像Soft和Mixed转移到工作区),总得来说就是所有本地修改都会丢失
(当然不包括工作区Test4,因为还没被git管理)。
此时还没有push到仓库(后面讲),可以更新代码
将Test1第二三提交的内容找回,但是Test2添加的a和Test3的内容则找不回了(因为当时这些内容都在暂存区,然而Hard已经清空暂存区,丢弃了所有修改
)
1.3.4、Keep
选择Keep回退后,回退版本的文件内容被还原为第一次提交的状态
(Test1第二三提交内容没了),其他状态的文件内容没有变化(也就是本地修改内容没丢失
),但是暂存区文件被移除到工作区
。
这种方式如果回退版本的时候Test1有修改内容,那么回退的时候会弹窗让你选择Test1修改没提交的内容如何处理,类似于解决冲突。(麻烦不推荐)
总结
-
Soft 回退:当你只想撤回 commit,但不影响文件内容,适用于你希望修改提交内容或者重新提交时使用(
推荐
) -
Mixed 回退:当你想撤销提交并清理暂存区,但保留文件修改,适用于需要重新整理提交时使用(感觉没用,想保留文件修改可以使用Soft)
-
Hard 回退:当你完全不需要当前工作和暂存区的修改,并且想彻底恢复到某个提交时使用,慎用,因为无法恢复丢失的内容(
保证本地所有修改内容都没用可以使用
) -
Keep 回退:当你希望恢复到某个提交的版本,但又不丢失本地修改时使用(恢复版本的文件的本地内容需要手动选择要还是丢,麻烦不推荐)
1.4、强制推送远程仓库
- 回退后本地仓库版本低于远程,需执行
强制推送
- 在强制推送远程仓库前,都可以通过
更新代码
恢复上面的版本回退
方式一(不推荐)
git push --force
是强制推送命令,它会将本地分支的内容强行推送到远程仓库,覆盖远程分支的历史记录。使用此命令时,如果远程分支的提交历史与本地分支不同,推送操作仍会进行
,并且不会进行任何检查,可能会丢失远程仓库中的更改。因此,这个命令需要小心使用,尤其在多人协作的情况下,可能会覆盖他人的更改。
git push --force
# 等同于
git push -f
方式二(推荐)
git push --force-with-lease
是 --force
的更安全版本。它会先检查远程分支是否被其他人更新,若有变动则推送失败并提示,避免覆盖他人更改
。该命令会自动推送当前分支到远程仓库对应的分支。
git push --force-with-lease # 推荐,避免覆盖他人提交
2、命令行操作
2.1、查看提交记录
方式一
git log
方式二
git log --oneline # 获取目标commit_id(前7位即可)
方式三
idea中直接选择历史版本右击选择复制修订号
2.2、执行回退
三种不同的回退模式,上面已经详细介绍了
# 彻底回退(删除工作区+暂存区修改)
git reset --hard 62b47d9 # 回退到上一个提交(保留工作区修改)
git reset --soft HEAD\~1 # 回退到前2个版本(保留工作区,暂存区重置)
git reset --mixed HEAD^^
2.3、强制同步远程
这里与IDEA图形化操作命令一样
git push --force-with-lease # 推荐,避免覆盖他人提交git push -f origin master # 强制覆盖远程分支
三、Revert方案:部分撤销提交
生成新的提交记录逆向操作目标版本,保留完整历史链
,适合团队协作或需审计的场景。
1、IDEA图形化操作
1.1、撤销目标提交
仅仅撤销本次提交历史的内容,如果此版本后面又添加了b,此次撤销就需要解决冲突了。
1.2、提交新版本
自动生成Revert "原提交信息"
的新提交,需要推送至远程(相当于我们手动点进这个文件,把添加a的代码删除,然后提交推送)
2、命令行操作
# 撤销单个提交
git revert 62b47d9
# 推送当前分支到远程仓库
git push origin 分支
总结
Git版本回退有两种主要方案:Reset
通过移动HEAD指针直接回退,适用于本地或强制同步远程,Revert
通过生成新的提交逆向撤销,适合团队协作并保留历史记录;根据需求选择合适方式并谨慎操作。
相关文章:
IDEA中Git版本回退终极指南:Reset与Revert双方案详解
目录 前言一、版本回退前置知识二、Reset方案:整体改写历史1、IDEA图形化操作(推荐)1.1、查看提交历史1.2、选择目标版本1.3、选择回退模式1.3.1、Soft(推荐)1.3.2、Mixed1.3.3、Hard(慎用)1.3.…...
【系统架构设计师】体系结构复审
目录 1. 说明2. 例题2.1 例题1 1. 说明 1.体系结构设计、文档化和复审是一个迭代过程。2.从这个方面来说,在一个主版本的软件体系结构分析之后,要安排一次由外部人员(用户代表和领域专家)参加的复审。3.鉴于体系结构文档标准化以…...
Unity之如何实现哔哩哔哩直播弹幕游戏
前言 什么是直播间互动? 当我们使用哔哩哔哩进行直播或者观看视频时,我们可以通过接入哔哩哔哩提供的 直播&互动玩法SDK,让直播和视频可以与Unity3D游戏客户端或者游戏服务器进行互动。 环境要求 Unity 2020.x或更高版本 依赖库:Newtonsoft Json Unity Package 在P…...
视觉图像处理
在MATLAB中进行视觉图像处理仿真通常涉及图像增强、滤波、分割、特征提取等操作。以下是一个分步指南和示例代码,帮助您快速入门: 1. MATLAB图像处理基础步骤 1.1 读取和显示图像 % 读取图像(替换为实际文件路径) img = imread(lena.jpg); % 显示原图 figure; subplot(2…...
学习LED驱动知识(二)
ppt来自B站周老师 使用普通元器件或者电源芯片构建电路驱动LED 1.电阻降压限流设计 案例一: USB供电电压为5V,因为LED的Vf为3v,所以电路只能6个LED并联,直接跟电源并联电流太大,LED会过流导致断路。所以要先串联一个…...
011---UART协议的基本知识(一)
1. 摘要 文章为学习记录。主要介绍 UART 协议的概述、物理层、协议层、关键参数。 2. UART概述 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART(串口),是一种异步****串…...
如何选择开源向量数据库
文章目录 评估维度查询性能索引与存储扩展性数据管理能力生态支持 常见向量数据库对比 评估维度 选择开源向量数据库时,需要综合考虑查询性能、数据规模、索引构建速度、生态支持等多个因素,以下是关键的评估维度:选择开源向量数据库时&…...
SpringBoot项目配置文件
SpringBoot项目提供了多种属性配置方式(properties、yaml、yml) yml配置文件 使用Apifox可以方便开发接口、前端测试等 工程搭建: 1.创建SpringBoot工程,并引入web开发起步依赖、mybatis、mysql驱动、lombok 2.创建数据库表&am…...
L33.【LeetCode笔记】循环队列(数组解法)
目录 1.题目 2.分析 方法1:链表 尝试使用单向循环链表模拟 插入节点 解决方法1:开辟(k1)个节点 解决方法2:使用变量size记录队列元素个数 获取队尾元素 其他函数的实现说明 方法2:数组 重要点:指针越界的解决方法 方法1:单独判断 方法2:取模 3.数组代码的逐步实现…...
前端知识点---库和包的概念
1. 什么是库(Library)? 库(Library) 是一组可复用的代码集合,提供特定功能(如网络请求、UI 组件、数据处理等)。 特点: 只是代码的集合,没有完整的应用结构…...
【CSS3】筑基篇
目录 复合选择器后代选择器子选择器并集选择器交集选择器伪类选择器 CSS 三大特性继承性层叠性优先级 背景属性背景色背景图背景图平铺方式背景图位置背景图缩放背景图固定背景复合属性 显示模式显示模式块级元素行内元素行内块元素 转换显示模式 结构伪类选择器结构伪类选择器…...
CentOS7 安装docker并配置镜像加速
一、Yum 安装docker【不推荐】 /var/lib/docker 路径主要用于存储容器数据,在使用和操作过程中数据量会逐渐增加。因此,在生产环境中,建议为 /var/lib/docker 单独挂载一个硬盘。也可以使用软连接的方式 1.1 安装必要的一些系统工具 yum i…...
【Go每日一练】统计字符出现的次数
👻创作者:丶重明 👻创作时间:2025年3月9日 👻擅长领域:运维 目录 1.😶🌫️题目:2.😶🌫️资源:3.😶🌫️代…...
正向代理与反向代理
代理: 通常称为代理、代理服务器或 Web 代理,代理一般是指正向代理,是位于一组客户端计算机之前的服务器。当这些计算机向 Internet 上的站点和服务发出请求时,代理服务器将拦截这些请求,然后代表客户端与 Web服务器进行通信&…...
报表DSL优化,享元模式优化过程,优化效果怎么样?
报表DSL优化与享元模式应用详解 一、报表DSL优化 1. 问题背景 报表系统通常使用领域特定语言(DSL)定义模板结构、数据绑定规则及样式配置。随着复杂度提升,DSL可能面临以下问题: 冗余配置:重复定义样式、布局或数据源…...
双击PPT文件界面灰色不可用,需要再次打开该PPT文件才能正常打开
双击PPT文件界面灰色不可用,需要再次打开该PPT文件才能正常打开 1. 软件环境⚙️2. 问题描述🔍3. 解决方法🐡解决步骤 4. 结果预览🤔 1. 软件环境⚙️ Windows10 或 Windows11 专业版64位,安装MotionGo软件(…...
学习前置知识第18和19天
今天要做什么? 1:显示数字要求格式 2:无符号除法指令:div 3:前面用vhd和img等格式进行系统界面启动,详细了解多种镜像格式文件的区别 一:显示数字要求格式 屏幕上显示的数字格式,三个颜色编码和数字属性 1&…...
C#运算符详解
一、运算符分类与功能 1.算术运算符 基本运算:(加)、-(减)、*(乘)、/(除)、%(取模) int a 10 / 3; // 结果为3(整数除…...
生成任务,大模型
一个生成项目 输入:文字描述(但是给的数据集是一串数字,id,ct描述,医生描述) 输出:诊断报告 一、数据处理 import pandas as pd #处理表格数据pre_train_file "data/train.csv"tr…...
下载Hugging Face模型的几种方式
1.网页下载 直接访问Hugging Face模型页面,点击“File and versions”选项卡,选择所需的文件进行下载。 2.使用huggingface-cli 首先,安装huggingface_hub: pip install huggingface_hub 然后,使用以下命令下载模型࿱…...
【Elasticsearch入门到落地】9、hotel数据结构分析
接上篇《8、RestClient操作索引库-基础介绍及导入demo》 上一篇我们介绍了RestClient的基础,并导入了使用Java语言编写的RestClient程序Demo以及将要分析的数据库。本篇我们就要分析导入的宾馆数据库tb_hotel表结构的具体含义,并分析如何建立其索引库。 …...
【由技及道】量子构建交响曲:Jenkinsfile流水线的十一维编程艺术【人工智障AI2077的开发日志008】
摘要:当代码提交触发时空涟漪,当构建流水线穿越量子维度——欢迎来到自动化构建的终极形态。本文将揭示如何用Jenkinsfile编写量子构建乐章,让每次代码提交都成为跨维度交响乐的音符。 动机:构建系统的量子哲学 “主人啊ÿ…...
Unity开发——CanvasGroup组件介绍和应用
CanvasGroup是Unity中用于控制UI的透明度、交互性和渲染顺序的组件。 一、常用属性的解释 1、alpha:控制UI的透明度 类型:float,0.0 ~1.0, 其中 0.0 完全透明,1.0 完全不透明。 通过调整alpha值可以实现UI的淡入淡…...
jenkins配置连接k8s集群
jenkins配置连接k8s集群 前言 我这边jenkins是在一个服务器里面,k8s集群在其他服务器,实现连接 首先jenkins下载有k8s插件 进入配置页面 获取k8s-api-server地址 对应k8s服务器执行 kubectl config view --minify -o jsonpath{.clusters[0].cluste…...
Linux 入门:常用命令速查手册
目录 一.指令 1.pwd(显示所在路径) 2.ls(列出所有子目录与文件) 3.touch(创建文件) 4.mkdir(创建目录) 5.cd(改变所处位置) 6.rm(删除&…...
【VUE】day01-vue基本使用、调试工具、指令与过滤器
【VUE】day01-vue基本使用、调试工具、指令与过滤器 1. 什么是Vue2. Vue的基本使用 1. 什么是Vue Vue(Vue.js)是一个用于构建用户界面的渐进式 JavaScript 框架,其核心设计理念是“自底向上逐层应用”,既能作为轻量级库增强现有项…...
deepseek为什么要开源
一、生态位的抢占与锁定:以 JDK 版本为例 在软件开发的世界里,生态位的抢占和先入为主的效应十分显著。就拿 Java 开发中的 JDK 版本来说,目前大多数开发者仍在广泛使用 JDK8。尽管 JDK17 和 JDK21 已经推出,且具备更多先进特性…...
软考 中级软件设计师 考点知识点笔记总结 day02
文章目录 3、计算机系统组成 (五大部件)3.1、主存储器3.2、运算器3.3、控制器3.4、Flynn分类法 4、指令系统4.1、七种寻址方式4.2、指令的流水处理4.3、流水线的计算 上一篇文章 软考知识点 day01 3、计算机系统组成 (五大部件) …...
Redis Cluster 客户端定位分片全解析:哈希槽与动态路由机制
Redis Cluster客户端定位分片全解析:哈希槽与动态路由机制 一、引言 Redis Cluster通过分片技术将数据分散存储在多个节点,实现水平扩展。客户端如何快速定位目标分片?本文将深入解析哈希槽算法、路由逻辑及实战技巧。 二、核心原理&#…...
基于Python+Vue的智能服装商城管理系统的设计与实现
👗 基于PythonVue的智能服装商城管理系统的设计与实现 电商级解决方案:全栈技术融合 智能推荐系统 多维度数据分析 项目亮点:课程设计优选 | 企业级架构规范 | 完整电商功能闭环 | 毕业设计选择 🌐 在线资源速览 类别地址访问方…...
提升Web可访问性的10个关键实践
在当今互联网时代,确保网站的可访问性(Accessibility)已经成为开发者和设计师的重要任务之一。Web可访问性不仅有助于残障用户更好地访问和使用网站,还能提升整体用户体验。本文将介绍10个关键的Web可访问性实践,帮助你…...
基于DeepSeek的智慧医药系统(源码+部署教程)
运行环境 智慧医药系统运行环境如下: 前端: HTMLCSS后端:Java AIGCDeepseekIDE工具:IDEA技术栈:Springboot HTMLCSS MySQL 主要角色 智慧医药系统主要分为两个角色。 游客 尚未进行注册和登录。具备登录注册、…...
yolov5训练自己数据集的全流程+踩过的坑
一,拿到yolov5数据集的第一步是什么呢,安装必要的依赖文件。在requirements.txt文件下存放 pip install -r requirements.txt二,检查是否可以正常进行检测,在detect.py,文件下,里面有默认的设置文件是可以…...
【Recon】Git源代码泄露题目解题方法
CTF中Git源代码泄露题目解题方法 1. 确认存在.git目录泄露2. 下载完整的.git目录3. 恢复Git仓库历史4. 查找Flag的常见位置5. 处理不完整的.git目录6. 其他技巧示例流程 在CTF中遇到Git源代码泄露题目时,通常可以通过以下步骤解决: 1. 确认存在.git目录泄…...
Android APP 启动流程详解(含冷启动、热启动)
目录 一、流程对比图 二、冷启动(Cold Launch) 2.1 用户点击应用图标(Launcher 触发) 2.2 AMS 处理启动请求 2.3 请求 Zygote 创建新进程 2.4 初始化应用进程 2.5 创建 Application 对象 2.6 启动目标 Activity 2.7 执行 …...
Python实现网络通信:Socket模块与TCP/IP协议全解析
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...
信奥赛CSP-J复赛集训(模拟算法专题)(1):P8813 [CSP-J 2022] 乘方
信奥赛CSP-J复赛集训(模拟算法专题)(1):P8813 [CSP-J 2022] 乘方 题目描述 小文同学刚刚接触了信息学竞赛,有一天她遇到了这样一个题:给定正整数 a a a 和 b b b,求 a b a^b ab …...
MongoDB学习笔记
MongoDB https://www.mongodb.com/download-center/community 打开客户端 mongo.exe 注意6.0版本不一样需要自行安装Mongoshell MongoDB Shell Download | MongoDB 创建数据库 use go_db; 创建集合 db.createCollection("student"); 添加MongoDB依赖 go get …...
C#模拟鼠标点击,模拟鼠标双击,模拟鼠标恒定速度移动,可以看到轨迹
C#模拟鼠标点击,模拟鼠标双击,模拟鼠标恒定速度移动,可以看到轨迹 using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks;namespa…...
时间复杂度空间复杂度
一、时间复杂度 时间复杂度(Time Complexity)表示算法运行时间随输入规模增长的变化趋势。通常用大 O 表示法(Big O Notation)来描述。 常见时间复杂度 复杂度名称例子O(1)常数时间复杂度访问数组中的某个元素。O(log n)对数时间复…...
【科研绘图系列】R语言绘制组合箱线图(grouped boxplot)
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据画图输出图片系统信息介绍 【科研绘图系列】R语言绘制组合箱线图(grouped boxplot) 加载R包 library(tidyverse) library(lemon) library(ggnewscale)…...
【前缀和与差分 C/C++】洛谷 P8218 求区间和
2025 - 03 - 09 - 第 72 篇 Author: 郑龙浩 / 仟濹 【前缀和与差分 C/C】 文章目录 洛谷 P8218 求区间和题目描述输入格式输出格式输入输出样例 #1输入 #1输出 #1 说明/提示思路代码 洛谷 P8218 求区间和 题目描述 给定 n n n 个正整数组成的数列 a 1 , a 2 , ⋯ , a n a_…...
数据库二三事(14)
备份与恢复数据库 备份具体内容包括数据库结构,对象与数据,造成数据丢失的原因有: 存储介质故障(硬件损耗) 用户操作错误(人工) 服务器故障(软硬都可能) 病毒侵害 …...
C++之list
list是链表的意思,由一个个节点组成 一、基本接口使用: (1)与vector相同,有个尾插,也可以使用迭代器遍历: void test_list1() {list<int> lt;lt.push_back(1);lt.push_back(2);lt.push…...
数据增强术:如何利用大模型(LLMs)来模拟不同的扰动类型以增强信息提取任务的鲁棒性
一、对抗样本库构建 1. 基于LLMs的领域针对性扰动设计对抗样本生成 替换实体、三元组和触发器(Replace Entity, Triple, and Trigger) 使用LLMs(如GPT-4)来替换句子中的实体、关系三元组或事件触发器,同时保持其类型不变,并确保其他内容不受影响: xxx名称(如“x方” →…...
《Gradio : AI awesome-demos》
《Gradio : AI awesome-demos》 This is a list of some wonderful demos & applications built with Gradio. Heres how to contribute yours! 🖊️ Natural language processing Demo name (link to demo)input type(s)output type(s)status badgeruDALL-ET…...
物联网中如何增加其可扩展性 协议 网络 设备 还包括软件层面上的
物联网(IoT)系统的可扩展性是指系统能够随着设备数量、数据流量和业务需求的增长而灵活扩展的能力。为了增加物联网的可扩展性,需要从协议、网络、设备和软件等多个层面进行优化和设计。以下是一些具体的策略和方法: 1. 协议层面的可扩展性 1.1 采用轻量级协议 轻量级协议…...
【每日学点HarmonyOS Next知识】对话框去掉圆角、数组拼接、自定义对话框依附某个控件、平移动画、页面栈管理
1、 HarmonyOS CustomDialog怎么去掉左右和底部的透明以及圆角? CustomDialog怎么去掉左右和底部的透明以及圆角 设置customStyle为true即可开启使用自定义样式。设置borderRadius为0去掉圆角属性。 属性用法参考文档:https://developer.huawei.com/c…...
Unity 通用UI界面逻辑总结
概述 在游戏开发中,常常会遇到一些通用的界面逻辑,它不论在什么类型的游戏中都会出现。为了避免重复造轮子,本文总结并提供了一些常用UI界面的实现逻辑。希望可以帮助大家快速开发通用界面模块,也可以在次基础上进行扩展修改&…...
【网络】HTTP协议、HTTPS协议
HTTP与HTTPS HTTP协议概述 HTTP(超文本传输协议):工作在OSI顶层应用层,用于客户端(浏览器)与服务器之间的通信,B/S模式 无状态:每次请求独立,服务器不保存客户端状态(通过Cookie/Session扩展状态管理)。基于TCP:默认端口80(HTTP)、443(HTTPS),保证可靠传输。请…...