idea撤销git add或者commit(未push)或者push的文件

Undo Commit,Revert Commit,Drop Commit的区别

是否删除对代码的修改 是否删除Commit记录 是否会新增Commit记录
Undo Commit 不会 未Push会,已Push不会 不会
Revert Commit 不会
Drop Commit 未Push会,已Push不会 不会

一、前言

某次在idea中执行commit后(未push), 发现提交代码错误了想撤回,此篇文章整理这种情况下如何撤回。

如下图:(commit提交了一次测试记录(未push),新增了Test.java文件)
在这里插入图片描述

二、退回commit(未push)

2.1、方式一:undo commit

适用情况:代码修改完了,已经Commit了,但是还未push,然后发现还有地方需要修改不想提交本次记录了。这时可以进行Undo Commit,修改后再重新Commit。

如果已经进行了Push,线上的Commit记录还是会存在的

简单来说,就是撤销了你Commit的这个动作。详细解释下:

1、首先,对项目进行了代码修改,然后进行commit操作。
在这里插入图片描述

2、确认Commit之后(未进行push)
在这里插入图片描述
3、进行Undo Commit操作
右键要撤销的记录,选择undo commit
在这里插入图片描述

在这里插入图片描述

执行后和未Commit之前完全一样, 而且commit记录也没了
在这里插入图片描述

2.2、方式二: reset current branch to here

适用情况:已commit未push

右键错误记录的上一次记录,然后选择reset current branch to here,选择Mixed
在这里插入图片描述
在这里插入图片描述
撤销后会把commit记录删除掉,提交的文件进入到Unversioned Files目录中
在这里插入图片描述

  • Soft:回滚到指定版本,并保留所有更改,这些更改将被重新提交。使用这种模式,你可以撤销已经提交的更改,然后重新提交。
  • Mixed:回滚到指定版本,并保留所有更改,但是更改将不会被重新提交(文件进入到Unversioned Files中)。使用这种模式,你可以撤销已经提交的更改,并保留这些更改,以备后续修改和提交。
  • Hard:回滚到指定版本,并删除指定版本之后的所有更改。使用这种模式,你可以完全撤销指定版本之后的所有更改。
  • Keep:回滚到指定版本,但是保留指定版本之后的更改。使用这种模式,你可以撤销指定版本之后的更改,并保留这些更改,以备后续修改和提交。

keep和hard撤销后会把文件也删除掉,强烈建议不要使用或者慎用

三、退回push

3.1、方式一:Reset HEAD

注意:此退回是不管你commit没push,还是commit已经push好了,都会退回到你指定的版本号.

步骤1.idea找到项目commit提交记录列表:
项目名右键—Git—Show History 或者idea下方的Version Control都可以打开历史提交的记录信息
在这里插入图片描述
步骤2.选择需要回退到的版本号:
例如我最新代码是Test2,需要回退到上一次Test1提交的版本

选择对应提交的记录右击——Copy Revision Number ; 复制commit的编号
在这里插入图片描述
步骤3.回退到对应的版本
项目名右击——Git——Repository——Reset HEAD
在这里插入图片描述
步骤4.输入需要回退的commit编号
第一步弹框中Reset Type选择——第2步复制的commit编号——Reset

这个的Reset Type有三个可选,按你自己意愿选择可选参数:

首先了解:
工作区 - 暂存区 - 本地仓库
代码编写及修改是在工作区 - git add 将本地修改添加到暂存区 - git commit 将暂存区中的内容提交到本地仓库

  • mixed
    不删除工作空间改动代码,撤销commit撤销git add . 操作,回退到工作区
  • soft
    不删除工作空间改动代码,撤销commit不撤销git add . 操作,
    回退到git commit之前,此时处在暂存区。(即执行git add 命令后)
  • hard
    撤销commit,撤销add,删除本地改动代码。
    (三者的改变全都丢失,即代码的修改内容丢失,直接回退到某个版本;因此我们修改过的代码就没了,需要谨慎使用)

我这里是想回退到Test1提交的记录,并且Test1之后的所有代码完全不要了,所以选择了Hard
在这里插入图片描述
步骤5.push回退的代码
IDEA下方选择Terminal——命令行输入git push -f ;强行推送到远程仓库
在这里插入图片描述
步骤6.完成
可见代码提交记录中已经没有Test2提交的记录了,已经回退到Test1版本了
在这里插入图片描述
可以看见, 刚刚的提交已经被撤销了,但是我本地修改的其他代码内容也被覆盖了,直接没有了,所以一定要慎用,如果你此时工作区还有其他功能未提交的代码,就都会被删除

猜你喜欢

转载自blog.csdn.net/weixin_49114503/article/details/131767667