- 本地代码修改后没有任何操作,只想撤回到修改之前,即最后一次提交之后的代码
//git checkout -- 要撤销的文件
git checkout -- build.gradle //表示撤销对build.gradle文件的修改
- 本地代码修改后作了 add 操作,想撤回此次 add 操作
git status 先看一下add 中的文件,然后
git reset HEAD //如果后面什么都不跟的话 就是上一次add 里面的全部撤销了
git reset HEAD XXX/XXX.java //就是对某个文件进行撤销了
- 本地代码修改后作了 git add 和 git commit 操作,想撤回到 git add 之前的代码
git reset commit_id //撤销commit和add操作,不删除工作空间改动代码
git reset --hard commit_id //撤销commit和add操作,代码变成上次commit后的代码,也就是删除工作空间改动代码。
git reset --soft HEAD^ //撤销commit,但不撤销add操作,不删除工作空间改动代码
git reset HEAD^ //撤销commit和add操作,即回到上次commit后,不删除工作空间改动代码
git reset --mixed HEAD^ //和上方的等同,两个表示一样的结果
git reset --hard HEAD^ //撤销commit和add操作,删除工作空间改动代码
上边HEAD^的意思是上一个版本,也可以写成HEAD~1 ,如果你进行了2次commit,想都撤回,可以使用HEAD~2
另外,如果commit时注释写错了,只想改下注释,可以不用回退在重新commit,只需
git commit --amend //此时会进入默认vim编辑器,修改注释完毕后保存就好了。
vim编辑器使用指南参考 git的常用命令及vim 使用教程
此时会进入默认vim编辑器,修改注释完毕后保存就好了。
- 如果要是 提交了以后,可以使用 git revert:
还原已经提交的修改,此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交。
git revert HEAD //撤销本次的 commit,即重置本次提交回到上一次提交之后
git revert HEAD^ //撤销前一次的 commit
git revert commit-id // 撤销指定的版本,撤销也会作为一次提交进行保存
git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容。