Git已经commit但是没有push的如何恢复到工作区呢,这个应该是个简单操作,但是确实忘了。上次我们知道如果push到了远程,那么这样就可以清除远程的push记录
git reset --hard <commitId>
git push origin HEAD -force
那么commit了之后而没有push的呢,如何将其恢复到工作区呢?
git reset HEAD^
记住三个参数 --soft --mixed --hard,--soft 不删工作工作空间改动代码,撤销commit, 不撤销git add .--mixed不删工作空间改动,撤销commit和add,--hard,撤销工作空间改动,删除commit,删除add
简介: 已经git commit一次提交,但是想撤销commit这次提交,且保留代码不变
问题背景:
写完代码后,我们一般这样
git add . //添加所有文件
git commit -m "本功能全部完成"
执行完commit后,想撤回commit,怎么办?
解决方法:
git reset --soft HEAD^
这样就成功的撤销了你的commit
注意,仅仅是撤回commit操作,您写的代码仍然保留。
- 说一下个人理解:
HEAD^的意思是上一个版本,也可以写成HEAD~1
如果你进行了2次commit,想都撤回,可以使用HEAD~2
关于参数:
–mixed
意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
–soft
不删除工作空间改动代码,撤销commit,不撤销git add .
–hard
删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态。
顺便说一下,如果commit注释写错了,只是想改一下注释,只需要:
git commit --amend
此时会进入默认vim编辑器,修改注释完毕后保存就好了。
-------------------
回顾下:
丢掉file文件工作区的修改
git checkout -- file
一定要加--
如果工作区的内容一金git add 到了暂存区,那么可以如此
git reset 既可以回退版本,也把暂存区的内容回退到工作区。
git reset HEAD -- file 把暂存区的修改重新放回工作区,HEAD表示最新版本
删除版本库中的文件
git rm 文件
git commit -m ''
恢复同样用
git checkout -- file