【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
撤销的区别如下图所示: