使用Git实现revert的完整操作步骤

 更新时间:2026年01月27日 09:01:11   作者:极地星光  
文章介绍了git revert命令的使用,包括其核心概念、完整操作步骤、进阶场景以及与git reset的区别,git revert是一种安全的代码回退方式,适用于已推送的代码,通过生成新的提交来抵消目标提交的修改,保留历史记录并便于追溯,需要的朋友可以参考下

一、git revert核心概念

git revert最安全的代码回退方式,它不会删除/修改历史提交记录,而是生成一个新的提交,用这个新提交来“抵消”目标提交的所有修改。这种方式适合:

  • 已推送到远程仓库的代码(避免修改公共历史)
  • 需要保留回退痕迹、便于追溯的场景
  • 团队协作中回退代码(不影响他人工作)

二、git revert完整操作步骤(以你的机械臂场景为例)

步骤 1:查看提交历史,找到要撤销的 Commit ID

先通过日志找到需要撤销的目标提交的哈希值(前7位即可):

# 查看简洁的提交历史(推荐)
git log --oneline

# 查看详细的提交历史(包含作者、时间、完整Commit ID)
git log

示例输出(--oneline 模式):

a87b9c0 (HEAD -> main) 优化机械臂J3角度判断逻辑
5d6e7f8 初始化机械臂笛卡尔坐标获取
9b8a7s6 新增手型切换基础逻辑

假设你要撤销的是 a87b9c0 这个“优化J3角度判断”的提交。

步骤 2:执行git revert撤销目标提交

基础用法(撤销单个提交)

# 撤销指定Commit ID的提交,会自动打开提交信息编辑器
git revert a87b9c0

执行后 Git 会自动生成一个默认的 revert 提交信息(比如 Revert "优化机械臂J3角度判断逻辑"),你可以按之前讲的规范修改(补充原因、关联工单等),修改完成后:

  • Esc 退出编辑模式
  • 输入 :wq 保存并退出(vim编辑器操作)

快速提交(无需打开编辑器)

如果不想手动编辑提交信息,可直接用 -m 参数指定信息:

git revert a87b9c0 -m "revert: 撤销机械臂J3角度判断逻辑的修改 (#123)

原因:J3角度范围判断覆盖不全,导致手型误判
撤销的提交ID:a87b9c0"

步骤 3:处理 revert 过程中的冲突(常见场景)

如果目标提交的修改和当前代码有冲突(比如你在撤销前又改了同一行代码),Git 会提示冲突,此时:

查看冲突文件:

git status

冲突文件会被标记为 both modified

打开冲突文件,手动解决冲突:
冲突处会显示如下格式,你需要保留正确的代码,删除冲突标记:

<<<<<<< HEAD
# 当前分支的代码
elbow_x = shoulder_x + 10  # 现有逻辑
=======
# 被撤销提交的代码
elbow_x = shoulder_x + 5   # 要撤销的逻辑
>>>>>>> a87b9c0 (优化机械臂J3角度判断逻辑)

解决冲突后,标记文件为已解决,并完成 revert:

# 标记冲突文件已解决
git add 冲突文件名.py
# 完成 revert 提交
git revert --continue

如果想放弃这次 revert,执行:

git revert --abort

步骤 4:推送 revert 提交到远程仓库

撤销完成后,将新生成的 revert 提交推送到远程(比如 main 分支):

git push origin main

三、进阶场景:撤销多个提交/合并提交

1. 撤销连续的多个提交

比如要撤销 a87b9c09b8a7s6 之间的所有提交(注意顺序:旧提交在前,新提交在后):

git revert 9b8a7s6..a87b9c0

2. 撤销合并提交(需指定父节点)

如果要撤销的是合并分支的提交,需要加 -m 参数指定父节点(通常用 1 表示主分支):

# 撤销合并提交(Commit ID为合并提交的ID)
git revert 合并提交ID -m 1

四、git revertvsgit reset(新手必区分)

特性git revertgit reset
历史记录保留所有提交(新增revert提交)删除指定提交后的所有记录
适用场景已推送的远程代码本地未推送的代码
团队协作安全(不影响他人)危险(会覆盖远程历史)
可追溯性强(能看到撤销过程)弱(历史记录被删除)

总结

  1. git revert 是安全的回退方式,核心是生成新提交抵消旧修改,适合已推送的代码。
  2. 核心操作流程:查看Commit ID → 执行git revert → 处理冲突(如有)→ 推送远程
  3. 提交信息要包含「操作类型+撤销原因+目标Commit ID」,便于团队追溯。

到此这篇关于使用Git实现revert的完整操作步骤的文章就介绍到这了,更多相关Git实现revert步骤内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mac安装软件时提示已损坏的完美解决方法

    Mac安装软件时提示已损坏的完美解决方法

    从网上下载的SecureCRT、Principle等设计软件,以及输入法等常用软件,安装时可能会提示“已损坏,移至废纸篓”这类信息,根本无法打开,这篇文章主要介绍了Mac安装软件时提示已损坏的解决方法,需要的朋友可以参考下
    2022-07-07
  • 如何让 vim 成为我们的神器(小结)

    如何让 vim 成为我们的神器(小结)

    这篇文章主要介绍了如何让 vim 成为我们的神器(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • TCP窗口被填满问题的排查实践

    TCP窗口被填满问题的排查实践

    这篇文章主要为大家介绍了TCP窗口被填满的问题排查实践,有需要的朋友可以借鉴参考下,希望能够有所帮助祝大家多多进步,早日升职加薪
    2022-01-01
  • Vscode 基础使用教程大全

    Vscode 基础使用教程大全

    本文给大家汇总介绍了一些vscode开始使用的过程中需要用到的基础的操作教程,非常简单实用,希望对大家熟练掌握vscode能够有所帮助
    2020-01-01
  • htaccess语法教程

    htaccess语法教程

    前些天不小心删除了原来的博客系统,问过godaddy的客服,恢复数据需要150美元,另外还需要提供不少信息,我于是放弃,注册了这个nunumick.me,打算从头再来。
    2011-09-09
  • Spark中的数据读取保存和累加器实例详解

    Spark中的数据读取保存和累加器实例详解

    这篇文章主要为大家介绍了Spark中的数据读取保存和累加器实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • archlinux 罗技K380 F1-F12 功能键锁定(实现方法)

    archlinux 罗技K380 F1-F12 功能键锁定(实现方法)

    这篇文章主要介绍了archlinux 罗技K380 F1-F12 功能键锁定,在windows中罗技K380可以安装Logitech Options来实现这个Fn锁定功能,需要的朋友可以参考下
    2023-04-04
  • 在Git中停止追踪文件并加入忽略的操作方法

    在Git中停止追踪文件并加入忽略的操作方法

    在使用 Git 管理项目时,我们经常会遇到这样的情况:某个文件我不想再提交了,但又不想删除它,该怎么办?比如:配置文件、日志文件、编译生成的文件夹等,这篇文章将手把手教你如何操作,确保你能轻松掌握这个技能,需要的朋友可以参考下
    2025-12-12
  • FlippingBook使用教程(附下载)

    FlippingBook使用教程(附下载)

    FlippingBook是一款收费的图书翻页效果的flash播放器,这里为大家介绍下FlippingBook的使用方法,需要的朋友可以参考下
    2014-12-12
  • 图片的色彩空间问题

    图片的色彩空间问题

    不知有多少朋友遇到此类问题:在PS里处理好的图,发到论论坛上以后发现图片颜色大变,变得灰蒙蒙,失去了层次,色彩生硬,还有点发青
    2014-05-05

最新评论