Git版本回退之reset和revert使用详解

作者:

文章目录
  • 在开发过程中,可能会遇到过错误提交的情况。这种情况下,先不要着急,可以通过以下两个命令来帮助你优雅的实现版本回退。
  • 以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。 您可能感兴趣的文章: IDEA中Git版本回退的两种实现方案 idea中git提交的代码如何回退到指定版本 Git回退到指定版本三种方法及常见的错误 git分支或指定文件回退到指定版本命令详解 idea中如何使用git进行版本回退详解 详解IDEA git分支回退指定的历史版本 git版本回退_动力节点Java学院整理 git版本回退方式(git reset、git revert、git stash)
  • 目录
    • Git版本回退之reset和revert
      • git reset
      • git revert
      • 补充
    • 总结

      在开发过程中,可能会遇到过错误提交的情况。这种情况下,先不要着急,可以通过以下两个命令来帮助你优雅的实现版本回退。

      假如现在有如下几个提交:

      其中:A 和 B 是正常提交,而 C 和 D 是错误提交。现在想把 C 和 D 回退掉。而此时HEAD 指针指向 D 提交(5lk4er)。我们只需将 HEAD 指针移动到 B 提交(a0fvf8),即可。

      这个时候就可以使用git reset 命令:

      git reset --hard a0fvf8 // 将HEAD指针移动到B提交点
      git push origin HEAD --force // 将提交强制推到远程仓库
      

      此时HEAD指针就会移动到 B 提交下:

      采用这种方式回退代码会使 HEAD 指针往回移动,从而会失去之后的提交信息且不可恢复,所以要慎重使用。

      git revert会创建一个新的版本,且HEAD指针会指向这个新生成的版本,原来错误提交信息也可以保留。

      可以通过用git revert 命令逐个回退:

      git revert 5lk4ergit revert 76sdeb

      回退版本少的可以逐个回退,多的话就要批量回退了:

      git revert OLDER_COMMIT^..NEWER_COMMIT

      通过对比发现,git reset 会失去后面的提交,而 git revert 是通过反做的方式重新创建一个新的提交,而保留原有的提交。所以应尽量使用 git revert 命令来回退版本,慎重使用 git reset 命令。

      假如现在有三个提交,不巧的是那个错误的提交刚好位于中间

      此时直接使用 git reset 命令将 HEAD 指针重置到 A 提交显然是不行的,因为 C 提交是正确的,需要保留的。

      正确的做法:先把 C 和 B 提交全部回退,再使用 cherry-pick 命令将 C 提交重新再生成一个新的提交 C’’,这样就实现了将 B提交回退的需求。

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。

      您可能感兴趣的文章:

      • IDEA中Git版本回退的两种实现方案
      • idea中git提交的代码如何回退到指定版本
      • Git回退到指定版本三种方法及常见的错误
      • git分支或指定文件回退到指定版本命令详解
      • idea中如何使用git进行版本回退详解
      • 详解IDEA git分支回退指定的历史版本
      • git版本回退_动力节点Java学院整理
      • git版本回退方式(git reset、git revert、git stash)

      站内搜索