知方号

知方号

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

文章目录 一、前言二、退回commit(未push)2.1、方式一:undo commit2.2、方式二: reset current branch to here 三、退回push3.1、方式一:Reset HEAD

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版本了 可以看见, 刚刚的提交已经被撤销了,但是我本地修改的其他代码内容也被覆盖了,直接没有了,所以一定要慎用,如果你此时工作区还有其他功能未提交的代码,就都会被删除

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。