在工作中难免会遇到把不该提交的代码提交的情况,不过好在我们可以回退。

idea中的做法1

如果你使用idea,那么通过简单的几部操作就可以回退到任意一次提交。

1.右键->git->Show History,列出所有的提交记录。


2.选中一条记录,点“Select In Git Log”

3.选中要回退到的提交记录,然后右键点击“Reset Current Branch to Here”

4.在弹出框选中“Mixed”,然后点”Reset”

然后就会提示你success。然后代码就可以Revert或者在此基础上做修改了。

idea中的做法2

1.右键->get->Show History,列出所有的提交记录。
2.选中要回退到的提交记录,右键“Copy Reversion Number”
3.Git->Repository->Rest HEAD
4.在弹出框中“To Commit”中填入刚刚复制的版本号,然后可以点下”Validate“来看下你是不是要回退到这个版本号。
5.Reset Type选择Mixed,然后点Reset
6.此时代码回退到了你复制的这个版本号执行git add 操作的状态,你可以修改或者提交。

使用git命令

1.使用git log得到提交记录,然后复制你要回退到的版本号commit_id。
2.执行git reset --mixed commit_id
3.然后代码此时的状态在暂存区,即刚刚执行git add操作。这样你就可以Revert或者在此基础上做修改了。

关于git 回退几种模式的区别

工作区 - 暂存区 - 本地仓库

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

hard模式

三者的改变全都丢失,即代码的修改内容丢失

soft模式

回退到git commit之前,此时处在暂存区。(即执行git add 命令后)

mixed模式

就等于 git reset HEAD 回退到工作去,即git add 之前。默认是mixed模式。
参考:https://www.jianshu.com/p/2956652d32fa

参考:https://blog.csdn.net/qq_22638399/article/details/80847205