IDEA git版本回滚使用解读

 更新时间:2025年10月30日 17:32:44   作者:_BugMan  
这篇文章主要介绍了Git的分区和回滚操作,包括工作区、暂存区和版本库的概念,以及如何在不同状态下进行回滚操作,如未commit、commit未push、已commit但未push以及已commit并push的情况

1.git分区

git的版本回滚其实就是回滚不同的分区,所以在聊git回滚之前我们有必要简单了解一下git的分区。

git在本地有三大分区:工作区、暂存区、版本库。

  • 工作区:正在编写,还未add的部分,红色。
  • 暂存区:add后的代码,绿色。
  • 版本库:commit后的代码,灰色。

在IDEA中,在loacl changes中可以看到在工作区中和暂存区中的内容:

版本库中的内容可以从log中看出来,log中可以看到commit test这条提交的分支是本地的main分支,如果是已经同步到远端的提交分支会显示为origin/main:

2.未commit,进行回滚

已经add到暂存区,但是未commit到本地版本库的改动有两种:

  • 新增的文件
  • 修改的文件

新增的文件直接删除即可,如果是修改的文件,使用roll back来回滚。在local change里面,选择想要rollback的文件即可:

也可以直接右击要rollback的文件然后rollback也行。

3.commit未push,进行回滚

3.1.undo commit

commit到本地版本库并且还未push的代码,可以在log里右击单次提交进行undo commit:

需要注意的是undo commit只能从最后一次commit开始回滚,undo commit后会要求选择一个变更列表来存放回滚后的内容,可以自己新建一个,比如此处的commit test,也可以在下拉框里选择一个已经存在的,如果是自己新建的变更列表,勾选了set active选项,后续的变动也会存放到该变更列表中:

可以看到多了一个变更列表:

变更列表有什么用喃?其实变更列表可以把它视为一个命名空间,就是用来做资源隔离的,在进行commit的时候需要下拉选择不同的变更列表来进行提交:

3.2.reset

有时候我们需要直接将本地的代码回滚到版本库的某一个版本,这时候可以使用reset来进行回滚。reset有几种模式:

  • soft,将版本回滚,工作区不动,暂存区=原来的+回滚后和回滚前的版本差异。
  • mixed,将版本回滚,回滚到了所有 git add 和 git commit 的命令执行之前。暂存区变为空,变更全部到了工作区。
  • hard,将版本回滚,将所有工作区和暂存区的文件修改全部清空,是真正的覆盖,不能找回了。
  • keep,将版本回滚,将所有commit的内容丢弃掉,未commit的内容保留。

在log上选择要回滚到的具体版本:

reset时会要求选择回滚的模式:

4.已commit&push,进行回滚

对commit&push的内容进行回滚其实就是对远端仓库的代码版本进行回滚,在实际开发中偶尔会将内容误推送到了远端仓库上去。

比如commit的message写错了,查看log的时候才发现,比如不小心将本地还没有开发完成的代码推送到远端仓库了,由或者合并冲突或者分支的时候合并错了......等等这些情况都要我们对远端仓库的代码进行回滚。

回滚的方式其实很简单,就是将本地的代码版本回滚到指定版本(至于是用revert还是reset,看自己),然后将本地的版本用git push -f强推到远端。

在IDEA中可以在terminal中执行指令:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java实现批量生成二维码

    java实现批量生成二维码

    这篇文章主要为大家详细介绍了java实现批量生成二维码的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • Java中NIO的三大核心组件详细解析

    Java中NIO的三大核心组件详细解析

    这篇文章主要介绍了Java中NIO的三大核心组件详细解析,NIO的Buffer类是一个抽象类,位于java.nio包中,提供了一组更加有效的方法,用来进行写入和读取的交替访问,本质上是一个内存块,既可以写入数据,也可以从中读取数据,需要的朋友可以参考下
    2023-12-12
  • SpringBoot集成Watchdog的完整步骤教学

    SpringBoot集成Watchdog的完整步骤教学

    这篇文章主要为大家详细介绍了SpringBoot中集成Watchdog的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-09-09
  • Java解决线程的不安全问题之volatile关键字详解

    Java解决线程的不安全问题之volatile关键字详解

    这篇文章主要介绍了Java解决线程的不安全问题之volatile关键字详解,可见性指一个线程对共享变量值的修改,能够及时地被其他线程看到,而 volatile 关键字就保证内存的可见性,需要的朋友可以参考下
    2023-08-08
  • 一篇文章带你搞懂Java线程池实现原理

    一篇文章带你搞懂Java线程池实现原理

    线程池无论是工作还是面试都是必备的技能,但是很多人对于线程池的实现原理却一知半解,并不了解线程池内部的工作原理,今天就带大家一块剖析线程池底层实现原理
    2022-11-11
  • Java跳出当前的多重嵌套循环的五种方法

    Java跳出当前的多重嵌套循环的五种方法

    在Java编程中,跳出多重嵌套循环可以使用break语句、标号与break组合、return语句、标志变量和异常处理五种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-10-10
  • spring boot 使用Mybatis-plus查询方法解析

    spring boot 使用Mybatis-plus查询方法解析

    这篇文章主要介绍了spring boot 使用Mybatis-plus查询方法解析,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • Java中后台线程实例解析

    Java中后台线程实例解析

    这篇文章主要介绍了Java中后台线程实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • Struts 2 数据校验功能及校验问题的解决方案

    Struts 2 数据校验功能及校验问题的解决方案

    这篇文章主要介绍了Struts 2 数据校验功能及校验问题的解决方案的相关资料,需要的朋友可以参考下
    2016-09-09
  • Java Web项目中Spring框架处理JSON格式数据的方法

    Java Web项目中Spring框架处理JSON格式数据的方法

    Spring MVC是个灵活的框架,返回JSON数据的也有很多五花八门的方式,这里我们来整理一个最简单的Java Web项目中Spring框架处理JSON格式数据的方法:
    2016-05-05

最新评论