• 详解IDEA git 版本回滚


    作者简介

    目录

    1.git分区

    2.未commit,进行回滚

    3.commit未push,进行回滚

    3.1.undo commit

    3.2.reset

    4.已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中执行指令:

  • 相关阅读:
    usermod
    普通人下半年做电商还有机会吗?
    SpringBoot——静态资源及原理
    可编程数据平面(论文阅读)
    Java NIO Selector 的使用
    【Qt】边学边写之Qt教程(零基础)
    使用ABAP2XLSX操作EXCEL
    【redis进阶】基础知识简要回顾
    从0到1搭建大数据平台之数据计算
    1.R语言介绍
  • 原文地址:https://blog.csdn.net/Joker_ZJN/article/details/133636584