场景重现
我们在git仓库写完代码后,一般有如下操作:
git add .
git commit -m “add something”
正常的下一部操作是git push,但是实际项目中会出现两种情况导致无法push
1> 在执行git push之前我们发现刚才添加的内容是错误的
2> push之后,需要别人review,别人review的时候发现你是错误的代码,拒绝merge
这两种情况都要求撤销commit
git commit 撤销操作
撤销commit的操作, git reset --[soft | mixed | hard] HEAD^
下面重点讲一讲,soft mixed hard几个参数的区别
1> --mixed
不删除工作空间改动代码,撤销commit,并且撤销git add .
mixed为默认参数,也即git reset --mixed HEAD^与git reset HEAD^效果一样
2> --soft
不删除工作空间改动代码,撤销commit,不撤销git add .
3> --hard
删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态。
git commit --amend
如果只是commit注释内容写错,就执行git commit --amend去修改commit的内容即可