git 撤销的总结

180 阅读2分钟

我们经常会遇到提交了代码,却又想撤回的情况,总结了以下三种工作中常见的情况

比如我们修改了本地的代码,然后使用:

git add

git commit -m '修改原因'

一、首先就是第一种情况:执行了commit,但还没执行push时,这种情况该怎么处理?

使用命令:

git reset --soft HEAD^

这样就成功撤销了commit,如果想要连着add也撤销的话,--soft改为--hard(删除工作空间的改动代码)。

HEAD^ 表示上一个版本,即上一次的commit,也可以写成HEAD~1,如果进行两次的commit,想要都撤回,可以使用HEAD~2

--soft 表示不删除工作空间的改动代码 ,撤销commit,不撤销git add

--hard 表示删除工作空间的改动代码,撤销commit且撤销add

二、然后是第二种情况,代码已经commit,但是又想修改commit注释,这种情况该怎么处理?

git commit --amend

这时候会进入vim编辑器,修改完成你要的注释后保存即可。

三、最后就是第三种情况,代码已经commit,并且已经push成功了,这种情况怎么处理?

其实是没有直接让远端代码回复到某次的指令,实现撤销push的思路如下: 

1.先让代码恢复到想要恢复的前一次提交记录

2.重新提交代码,覆盖端上的代码,就相当于撤销了push 的提交

实现方式如下: 1、先找到commit的版本号(Revision Number),如下命令

git log

2、撤回到需要的版本,如下命令

git reset --hard <版本号>

3、这时如果使用git push重新提交会报错

4、要使用强制push,如下命令

git push --force