记录自己提交代码时,手滑错误commit了多余的文件,但未push到云端,想要撤回整个commit的操作:
idea菜单栏上的 VCS–>Git–>Reset HEAD…
出现如下弹框:
此时按照图中选择回退的方式,以及回退到哪个版本,点击“Reset”即可,在”Version Control” 中 “log” 里,最新一次提交的记录消失即回退成功。
题外扩展
其中:Reset Type
(1)、Mixed是默认方式。只保留源码,会回退 commit 和 index 的信息;
(2)、Soft 回退到某个版本。只回退了 commit 的信息,之前写的代码还是保留的,不会恢复到 index file 一级。如果还要提交,直接 commit;
(3)、Hard 彻底回退,本地源码也会变成上一个版本内容,不保留之前 commit 的代码。
打个比方:
版本一:增加文件a.txt,并写下内容 “版本一”
版本二:修改文件a.txt,并增加内容,写下 “版本二”
在版本二的基础上,增加了b.txt文件,并添加内容“版本三”(并git add),然后commit;
一、用Mix方式回到版本一:
增加的b.txt文件则会变成红色的状态(未git add的状态),表示此文件不被git版本追踪控制
二、用Soft 方式回到版本一:
增加的b.txt文件则会变成绿色的状态(git add的状态),表示此文件被git版本追踪控制了
三、用Hard方式回到版本一:
版本二以及版本三的内容全部消失,只剩下版本一的内容
用Mix方式或者Soft方式 都可以撤销commit操作,同时自己做修改过的代码重置为未commit的状态,再次重新commit即可。
注:HEAD~ 和 HEAD^ 都可,HEAD~1 即撤销最新一次的本地提交;HEAD~ 和 HEAD~1 是一个意思。HEAD~~ 和 HEAD^^ 都是指次次新版本,也就是倒数第三个版本,以此类推,数字同理。