二 『现学现忘』Git后悔药 — 33、revert撤销

目录

  • 4、一次移除某几次提交
    • (1)git revert移除某几次提交的修改
    • (2)git revert 移除某几次连续的提交的修改
  • 5、revert命令常用参数
  • 6、git revertgit reset命令的区别
提示:接上一篇文章 。
4、一次移除某几次提交上一篇文章的演示中,只有两个提交需要 revert,我们可以一个个回退 。但如果有几十个呢?一个个回退肯定效率太低而且容易出错 。
(接上面示例)
我们可以使用以下方法进行批量回退:
(1)git revert移除某几次提交的修改命令:git revert <commit6> <commit5> <commit4> …
注意:提交的顺序是从最近的提交开始往前写 。
示例:
# 1.查看版本库历史提交记录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文件# 2.把第5、6次提交移除# 先写提交5ID , 在写提交6IDL@DESKTOP-T2AI2SU MINGW64 /j/git-repository/revert_test (master)$ git revert d0c8e48 30f7626Auto-merging readme.txtCONFLICT (content): Merge conflict in readme.txterror: could not revert d0c8e48... Revert "第5次提交,revert 撤销第4次提交"hint: after resolving the conflicts, mark the corrected pathshint: with 'git add <paths>' or 'git rm <paths>'hint: and commit the result with 'git commit'说明:
  • Auto-merging readme.txt:自动合并readme.txt文件出现问题 。
  • CONFLICT (content): Merge conflict in readme.txt:冲突(内容):在readme.txt中合并冲突 。
  • error: could not revert d0c8e48... Revert "第5次提交 , revert 撤销第4次提交":无法还原d0c8e48提交 。
  • hint: after resolving the conflicts, mark the corrected paths:解决冲突后,把冲突文件提交到暂存区 。
  • hint: with 'git add <paths>' or 'git rm <paths>':可使用“ git add <路径>”或“ git rm <路径>”方法,添加冲突文件到暂存区,或者删除文件 。
  • hint: and commit the result with 'git commit':提示:并使用'git commit'提交结果 。
我们应该先写commit-6,在写commit-5
# 1.撤销第5、6次提交L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/revert_test (master)$ git revert 30f7626 d0c8e48[master 31341a4] Revert "Revert "第7次提交,revert 撤销第5、6次提交"" 1 file changed, 1 insertion(+)[master 509c208] Revert "Revert "第8次提交 , revert 撤销第5、6次提交"" 1 file changed, 1 insertion(+)# 2.查看版本库历史提交记录L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/revert_test (master)$ git log --oneline509c208 (HEAD -> master) Revert "Revert "第8次提交 , revert 撤销第5、6次提交""31341a4 Revert "Revert "第7次提交,revert 撤销第5、6次提交""30f7626 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文件内容 , 又回到V4版本了L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/revert_test (master)$ cat readme.txtrevert test v1revert test v2revert test v3revert test v4我们可以看到,每撤销一个commit提交,都会生成一个新的提交 。上面撤销了两个commit,就让你编写两次提交说明信息 。
这时,错误的提交 commit-5commit-6 依然保留 , 将来进行甩锅的时候也有依可循 。而且 , 这样操作的话 HEAD 指针是往后移动的,可以直接使用 git push 命令推送到远程仓库里,而这种做法 , 正是企业所鼓励的 。
(2)git revert 移除某几次连续的提交的修改【二 『现学现忘』Git后悔药 — 33、revert撤销】命令:git revert <commit新>...<commit旧>
(这里就不做演示了 , 同上)
注意: