git reset
命令去回退代码,原因与上述一样 。所以,我们需要找到一个命令,既可以回退代码,又可以保存错误的提交 。这时 git revert
命令就派上用场了 。
命令:git revert <commit>
演示:
# 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 --onelined0c8e48 (HEAD -> master) Revert "第5次提交,revert 撤销第4次提交"c04b29c 第4次提交,新增内容:revert test v4fd819dc 第3次提交,新增内容:revert test v3c71ae3c 第2次提交,新增内容:revert test v2557f7c3 第1次提交,新增readme.txt文件# 可以看到第4次提交的commit依然存在 。# 3.查看readme.txt文件内容L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/revert_test (master)$ cat readme.txtrevert test v1revert test v2revert test v3# 可以看到V4 版本内容已经没有了 。
如下图所示:

文章插图
这里需要说明一下:
git revert
命令的作用通过反做创建一个新的版本,这个版本的内容与我们要回退到的目标版本一样,但是HEAD指针,是指向这个新生成的版本,而不是目标版本 。使用
git revert
命令来实现上述例子的话,我们可以这样做:先 revert commit-4
,再 revert commit-3
(有多个提交需要回退的话需要由新提交到旧提及哦啊进行 revert) 。我们继续同样的操作步骤,把第三次提交也撤销掉 。
# 1.撤销第3次提交L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/revert_test (master)$ git revert fd819dc[master 30f7626] Revert "第6次提交,revert 撤销第3次提交" 1 file changed, 1 deletion(-)# 2.查看版本库历史提交记录L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/revert_test (master)$ git log --oneline30f7626 (HEAD -> master) Revert "第6次提交,revert 撤销第3次提交"d0c8e48 Revert "第5次提交,revert 撤销第4次提交"c04b29c 第4次提交,新增内容:revert test v4fd819dc 第3次提交,新增内容:revert test v3c71ae3c 第2次提交,新增内容:revert test v2557f7c3 第1次提交,新增readme.txt文件# 3.查看readme.txt文件内容L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/revert_test (master)$ cat readme.txtrevert test v1revert test v2
通过上面练习,我们可以得出,git reset
撤销和git revert
撤销的区别,如下图所示:
文章插图
(2)revert命令说明
git revert <commit>
命令:- 这个命令会生成一个新的提交记录,新的提交记录就是把需要移除的提交撤销掉,所生成的新提交 。
- 如果工作区或暂存区还有修改未提交,那么会提示需要先提交或存储起来这些文件 。
- 如果在移除的过程中发生了冲突,可以在解决了冲突后,使用
git add
命令添加修改的冲突文件到暂存区中,在使用git revert --continue
来继续操作 。如果不想继续操作,当然也可以使用git revert --abort
命令来停止移除操作,恢复到执行git revert <commit>
命令之前的状态 。 - 如果
revert
移除的过程中出现冲突,需要把这些冲突解决才可以继续操作 。我们可以使用git revert --skip
命令来跳过一个commit
的冲突解决 。如果后续还有冲突,也同样如此进行跳过,直到全部冲突解决完成 。但是使用经验总结扩展阅读
- 2023年10月14日是回娘家吉日吗 2023年10月14日回娘家吉日一览表
- 2023年10月14日打猎行吗 2023年10月14日打猎吉日一览表
- 2023年10月14日去医院吉日一览表 2023年农历八月三十宜去医院吗
- 微醺鸡尾酒多少度
- 2023年10月14日领养孩子吉日一览表 2023年10月14日是领养孩子的黄道吉日吗
- 一次性口罩气味大是甲醛吗
- 一斤苦瓜泡多少酒
- 2023年10月14日认干儿子吉日一览表 2023年10月14日认干儿子好不好
- 蝙蝠飞进家里需要消毒吗
- 为什么拖鞋穿久了会有一股屎臭味啊?