在日常管理项目的过程中,可能会遇到提交的 commit/merge 并不是想要的,或是操作失误提交了,那么此时我们需要把不想要的 commit/merge 取消掉,如果做到呢?Git 为我们提供了一个 reset
command,很好地解决了这个问题。
reset
1. 命令说明
1 | $ git reset [--hard|soft|mixed|merge|keep] [<commit>|<HEAD>] |
常用的是[--hard|soft|mixed]
,本文主要使用--hard
作为例子进行说明。
2. 本地仓库
在本地仓库执行 $ git reset --hard HEAD^
可以将本地的仓库回滚到上一次提交时的状态,HEAD^
指的是上一次提交。
同时你也可以执行 $ git reset --hard fc232ae
将其回滚到 fc232ae
commit 时的状态。
3. 远程仓库
以上操作只会对本地仓库造成影响,而远程仓库的源码和 commit 信息并不会因此改变。那么此时我们需要另外一个 command 来改变远程仓库的状态。
注意,此时不要在上一步的操作之后执行$ git pull
,因为这个操作会使本地仓库的状态与远程同步。1
$ git push origin [branch] -f
执行此命令后,Git 会将远程仓库的状态与本地仓库的保持一致,即回滚状态。