1、还未添加到暂存区:git checkout -- filename
执行命令后,会回退到未修改之前的状态
2、已经添加到暂存区:git reset HEAD filename
执行命令后,会回退到工作区之前的状态
3、已经 commit,但是还未 push
git reset --hard 965e46508c88971d13760ef612ef2a417fc5c1a0
4、回到未来
当后悔撤销某个提交之后,也可以使用 git reset --hard,后面加上需要回到味道的版本的 commitid 就可以了。
慎用:git reset --hard d1aba09ca
但是上面的命令要慎用!会将d1aba09ca之后的提交的代码在本地都清空掉!但是暂时不会修改远端。
不知道未来的 ID 怎么办?
git reflog:记录你的每一次命令,包括未来的。
5、撤销 push
git reset 04310dd1
这个命令将本地回退到push之前的状态,
可以git status看效果:
然后用git push --force命令,将本次代码再次推送到远端。
由于远端代码之前已经提交过,本次会强制覆盖远端,并且也会覆盖远端的commit记录,如下图所示,是最新一次的:变成了两次提交,之前是只有一次提交,我这把将本地改成两次提交。