我们经常会遇到提交了代码,却又想撤回的情况,总结了以下三种工作中常见的情况
比如我们修改了本地的代码,然后使用:
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