目录
- 1、Git的三种后悔药
- 2、revert命令原理
- 3、revert命令的使用
- (1)移除某次提交的修改
- (2)revert命令说明
amend
、revert
、reset
。git commit --amend
:新的提交覆盖上一次提交的内容 。git revert
:提交一个新的commit
, 来撤销之前的commit
。git reset
:直接回滚到指定的commit
。--soft
:只回退版本库,工作区和暂存区的内容不回退 。--mixed(默认)
:回退版本库和暂存区 , 工作区中的内容不回退 。--hard
:工作区,暂存区,版本库中的内容都回退到指定的提交 。(危险的)
提示:之前我们把2、revert命令原理在我们使用Git的操作中,遇到需要回滚代码的情况几乎是难以避免的,而git reset
命令说完了 ,git commit --amend
命令我们下一篇文章说 。这篇文章来说git revert
命令 。
git revert
命令是一个非常实用的功能 , 掌握好 git revert
命令的使用是很有必要的 。git revert
命令:是用于“反做”某一个版本,以达到撤销该版本的修改的目的 。比如,我们提交了三个版本 , 突然发现版本二不行(如:有
bug
),想要撤销版本二,但不想或不需要撤销版本三提交,就可以用 git revert
命令来反做版本二,同时生成新的版本四 , 这个版本四里会保留版本三的东西,但撤销了版本二的东西 。但注意:版本二的历史提交记录是不会删除的 。
如下图所示:
文章插图
提示:注意是3、revert命令的使用现有一个版本库 , 其中有4次提交,版本库的历史提交记录如下:revert命令
是撤回某个改动 , 不是reset
命令撤回到某个改动 。另外,这条命令不会删除任何commit
记录,而是会新增一条revert
操作的commit
记录(会弹出commit message
的编辑窗口) 。
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/revert_test (master)$ git log --onelinec04b29c (HEAD -> master) 第4次提交,新增内容:revert test v4fd819dc 第3次提交,新增内容:revert test v3c71ae3c 第2次提交,新增内容:revert test v2557f7c3 第1次提交 , 新增readme.txt文件
我们发现第三次提交和第四次提交有错误,需要撤销 。如下图:
文章插图
(1)移除某次提交的修改
commit-1
和 commit-2
是正常提交,而 commit-3
和 commit-4
是错误提交 。现在 , 我们想把 commit-3
和 commit-4
撤销掉 。而此时,HEAD 指针指向 commit-4
提交(c04b29c
) 。我们只需将 HEAD 指针移动到commit-2
提交(c71ae3c
),就可以达到目的 。我们一定会想到之前学过的
git reset
命令 。执行命令git reset --hard c71ae3c
,就可以退回到 commit-2
提交 。采用这种方式回退代码的弊端显而易见,那就是会使 HEAD 指针往回移动,从而会失去之后的提交信息 。将来如果突然发现,
commit-3
和 commit-4
是多么绝妙的想法,可它们已经早就消失在历史的长河里了(但是通过reflog
也能找回来) 。而且,有些公司明令禁止使用
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 版本内容已经没有了 。
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 黑色沙漠手游10月19日微信每日一题答案是什么
- 一加9r和红米k40哪个好_手机参数配置对比
- 不会游泳的人如何自学游泳(一般人如何学习游泳)
- 怎么一天学会游泳,游泳教程(游泳老师教女神游泳)
- Java一次返回中国所有省市区三级树形级联+前端vue展示【200ms内】
- SpringBoot+Vue3 AgileBoot - 手把手一步一步带你Run起全栈项目
- CentOS 7.9 安装 kafka_2.13
- 新剑侠情缘10月19日微信每日一题答案是什么
- 宝石研物语:伊恩之石迈向绚烂之时最后一关怎么打
- oppok9骂声一片_oppok9到底值不值得买