一 『现学现忘』Git后悔药 — 32、revert撤销( 二 )

如下图所示:

一 『现学现忘』Git后悔药 — 32、revert撤销

文章插图
这里需要说明一下:
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撤销的区别 , 如下图所示:
一 『现学现忘』Git后悔药 — 32、revert撤销

文章插图
(2)revert命令说明git revert <commit>命令:
  1. 这个命令会生成一个新的提交记录,新的提交记录就是把需要移除的提交撤销掉 , 所生成的新提交 。
  2. 如果工作区或暂存区还有修改未提交 , 那么会提示需要先提交或存储起来这些文件 。
  3. 如果在移除的过程中发生了冲突 , 可以在解决了冲突后,使用 git add 命令添加修改的冲突文件到暂存区中,在使用 git revert --continue 来继续操作 。如果不想继续操作,当然也可以使用 git revert --abort 命令来停止移除操作,恢复到执行git revert <commit>命令之前的状态 。
  4. 如果revert移除的过程中出现冲突 , 需要把这些冲突解决才可以继续操作 。我们可以使用 git revert --skip 命令来跳过一个commit的冲突解决 。如果后续还有冲突,也同样如此进行跳过,直到全部冲突解决完成 。但是使用git revert --skip 命令跳过的commit,将会在历史提交记录中被删除(reflog命令还是可以看到的),所以git rebase --skip 这个命令慎用 。
拓展思路:
  • git revert HEAD:撤销前一次commit
  • git revert HEAD^:撤销前前一次commit
【一 『现学现忘』Git后悔药 — 32、revert撤销】

推荐阅读