Git-revert和reset
1. git reset
1.1 设计目的
- 用以重设本地的更改,可以实现本地状态的回退
- 比如
git reset --hard <hash-commit>可以实现对某一个提交哈希状态的回退。回退之后,分支上在此之后的所有commit都会丢失(可以通过git reflog进行找回) - 关于参数,请参考[[Git-reset当中的soft、hard、mixed]]
1.2 实际使用
git reset HEAD?- 重写
staging area里面的目录树,被master所指向的目录树进行替换,但是work space不受影响。 - 就是把版本回退到
HEAD所指向的状态。 - 可以用来清空
staging area暂存的内容
- 重写
另外一个场景,比如只有一个本地分支,然后需要回退状态,此时就可以利用
git reset进行操作。
2. git revert
2.1 设计目的
- 用以撤销已经push到远程多人仓库的commit
- 利用全新的
commit来取代指定的commit,HEAD状态依然往后走
2.2 实际使用
- 如果
git revert两次,那么相当于多了两次commit,但是内容并没有变化 - 比如原始状态如下图所示:

- 想要回退到
c5状态,那么只需要git revert ac79aa即可
- 注意!!
- 不是将状态回退到C5状态,而是**将C5提交引起的相关修改全部还原**,C6等等另外的提交不变。
- 因此,一旦发现出错之后,就应当立即进行
git revert回退,否则就需要git revert多个commit