1:
任何还没有PUSH到远端(origin),但已经被提交到本地(local)的commit,都可以用以下命令回退。
git reset HEAD~1 --hard
意思就是说跑git.exe里的reset方法,用当前的HEAD回退一步,这一步或许不止包含一个变动(changes),并且用--hard 指令。
当然,你可以跑多次这个命令来一步步回退到你想要的地方,你也可以找到想要回退commit-id来进行
git reset --hard <sha1-commit-id>
注意:这样回退你所修改的代码就会直接被清掉了,但是可以用git log来查看。这个不展开了。
2:
如果你的commit已经push到远端(origin)了,你还可以通过以下命令强行覆盖提交历史(history),这一句是跑在上面回退本地提交之后的。
git push origin HEAD --force
这里用的是git push,其实原因就是我们这里做的根本不是什么回退动作,而是直接用我们刚刚回退整理好的版本强行覆盖(--force)远端(origin),无论你是不是在做回退的操作,其实只要是需要覆盖远端的时候都会用到这个。
但这里可能会产生一个新的问题,就是你想要强制回退且强行覆盖的commit,如果被其他同事拉取(pull)了的话,当这位同事再次推送(push)这个分支的时候