1. revert作用

Revert撤销一个提交的同时会创建一个新的提交。这是一个安全的方法,因为它不会重写提交历史。比如,下面的命令会找出倒数第二个提交,然后创建一个新的提交来撤销这些更改,然后把这个提交加入项目中。

相比git reset,它不会改变现在的提交历史。因此,git revert 可以用在公共分支上,git reset 应该用在私有分支上。

你也可以把git revert 当作撤销已经提交的更改,而git reset HEAD 用来撤销没有提交的更改。

就像git checkout 一样,git revert 也有可能会重写文件。所以,但与git checkout不同的是,Git会在你执行 revert 之前要求你提交或者缓存你工作目录中的更改。否则执行失败

2. work directory 安全的

1
2
3
4
5
6
7
8
9
10
11
➜  recovery git:(master) ✗ git revert HEAD

error: 您对下列文件的本地修改将被合并操作覆盖:

file.txt

请在合并前提交或贮藏您的修改。

正在终止

fatal: 还原失败

没有文件模式

1
2
3
➜  recovery git:(master) git revert file.txt       

fatal: bad revision 'file.txt'

3. commit id

表示撤销commit id的内容,还原到这个commit id的前一次内容
比如还原到上一次版本,就是 git revert HEAD

4. 对commit历史的影响

命令logreflog
git revert新增可跟踪
git checkout无变化无变化
git reset丢失可跟踪
git restore无变化无变化
git amend改变改变

参考:

https://static.kancloud.cn/apachecn/git-doc-zh/1945519