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

 更新时间:2025年04月03日 08:40:28   作者:chengliang666  
这篇文章主要介绍了Git版本回退之reset和revert使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Git版本回退之reset和revert

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

git reset

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

其中: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

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提交回退的需求。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • git提交报错pre -commit hook failed (add --no-verify)问题及解决

    git提交报错pre -commit hook failed (add 

    这篇文章主要介绍了git提交报错pre -commit hook failed (add --no-verify)问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Git上新建的分支IDEA找不到问题及解决

    Git上新建的分支IDEA找不到问题及解决

    文章介绍了如何在IntelliJ IDEA中使用Git进行代码拉取(pull)操作,包括通过点击刷新按钮和在终端中执行命令两种方法,同时,还提供了解决项目未更新问题的步骤
    2024-11-11
  • 关于图片存储格式的整理(JPEG格式介绍)

    关于图片存储格式的整理(JPEG格式介绍)

    这篇文章主要介绍了关于图片存储格式的整理(JPEG),需要的朋友可以参考下
    2016-01-01
  • BERT vs GPT自然语言处理中的关键差异详解

    BERT vs GPT自然语言处理中的关键差异详解

    这篇文章主要为大家介绍了BERT vs GPT自然语言处理中的关键差异详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • 关于Unity动画状态机Animator使用教程

    关于Unity动画状态机Animator使用教程

    这篇文章主要介绍了关于Unity动画状态机Animator的使用教程,有需要的朋友可以借鉴参考下,希望可以对广大读者朋友能够有所帮助
    2021-09-09
  • Visual Studio自定义项目模版

    Visual Studio自定义项目模版

    这篇文章介绍了Visual Studio自定义项目模版的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Git推送代码的7种高效方式

    Git推送代码的7种高效方式

    在 Git 中,推送代码(即将本地提交推送到远程仓库)有多种方式,每种方式适用于不同的协作场景和需求,以下是几种常见的推送代码的方式、结合完整示例说明,并以表格形式总结对比,需要的朋友可以参考下
    2025-08-08
  • Git如何查看历史提交及其参数设定的常用命令详解

    Git如何查看历史提交及其参数设定的常用命令详解

    查看 Git 提交历史可以帮助你了解代码的变更情况和开发进度,Git 提供了多种命令和选项来查看提交历史,从简单的日志到详细的差异对比,本文给大家介绍了Git如何查看历史提交及其参数设定的常用命令,需要的朋友可以参考下
    2025-07-07
  • Git建立本地仓库并上传到Gitee的详细步骤

    Git建立本地仓库并上传到Gitee的详细步骤

    这篇文章主要介绍了Git建立本地仓库并上传到Gitee,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 一文详解Git中分支本地和远程删除的方法

    一文详解Git中分支本地和远程删除的方法

    在使用 Git 进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧
    2025-06-06

最新评论