【git命令】git revert

git revert

git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的。比如,我们commit了三个版本(版本一、版本二、 版本三),突然发现版本二不行(如:有bug),想要撤销版本二,但又不想影响撤销版本三的提交,就可以用 git revert 命令来反做版本二,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西。如下图所示:

注意:git revert命令是撤回某个改动,不是git reset命令撤回到某个改动,这个命令不会删除任何删除任何commit记录,而是会新增一条revert操作的commit记录。

现在有一个版本库,有四次commit提交,版本库的历史记录如下:

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/revert_test (master)
$ git log --oneline
c04b29c (HEAD -> master) 第4次提交,新增内容:revert test v4
fd819dc 第3次提交,新增内容:revert test v3
c71ae3c 第2次提交,新增内容:revert test v2
557f7c3 第1次提交,新增readme.txt文件

现在发现第三次提交和第四次提交有错误,需要撤销:

commit-1 和commit-2是正常提交,而commit-3和commit-4是错误提交,现在需要把commit-3和commit-4提交,此时HEAD指针指向commit-4提交。git-revert命令通过发做一个新的版本,

# 1.撤销第四次提交
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/revert_test (master)
$ git revert c04b29c
[master d0c8e48] Revert "第5次提交,revert 撤销第4次提交"
 1 file changed, 1 deletion(-)

# 之后会弹出一个编辑文本框,来让你写新生成提交的注释,如下图。

# 2.查看版本库历史提交记录
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/revert_test (master)
$ git log --oneline
d0c8e48 (HEAD -> master) Revert "第5次提交,revert 撤销第4次提交"
c04b29c 第4次提交,新增内容:revert test v4
fd819dc 第3次提交,新增内容:revert test v3
c71ae3c 第2次提交,新增内容:revert test v2
557f7c3 第1次提交,新增readme.txt文件
# 可以看到第4次提交的commit依然存在。

# 3.查看readme.txt文件内容
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/revert_test (master)
$ cat readme.txt
revert test v1
revert test v2
revert test v3
# 可以看到V4 版本内容已经没有了。

git reset撤销和git revert撤销的区别如下图所示:

参考资料

1. git revert 踩坑之路

2. git revert操作

3. Git恢复之前版本的两种方法reset、revert(图文详解)

posted @ 2022-05-12 11:41  苏格拉底的落泪  阅读(93)  评论(0编辑  收藏  举报