23人参与 • 2026-01-27 • 其他编程
git revert 是最安全的代码回退方式,它不会删除/修改历史提交记录,而是生成一个新的提交,用这个新提交来“抵消”目标提交的所有修改。这种方式适合:
先通过日志找到需要撤销的目标提交的哈希值(前7位即可):
# 查看简洁的提交历史(推荐) git log --oneline # 查看详细的提交历史(包含作者、时间、完整commit id) git log
示例输出(--oneline 模式):
a87b9c0 (head -> main) 优化机械臂j3角度判断逻辑 5d6e7f8 初始化机械臂笛卡尔坐标获取 9b8a7s6 新增手型切换基础逻辑
假设你要撤销的是 a87b9c0 这个“优化j3角度判断”的提交。
# 撤销指定commit id的提交,会自动打开提交信息编辑器 git revert a87b9c0
执行后 git 会自动生成一个默认的 revert 提交信息(比如 revert "优化机械臂j3角度判断逻辑"),你可以按之前讲的规范修改(补充原因、关联工单等),修改完成后:
esc 退出编辑模式:wq 保存并退出(vim编辑器操作)如果不想手动编辑提交信息,可直接用 -m 参数指定信息:
git revert a87b9c0 -m "revert: 撤销机械臂j3角度判断逻辑的修改 (#123) 原因:j3角度范围判断覆盖不全,导致手型误判 撤销的提交id:a87b9c0"
如果目标提交的修改和当前代码有冲突(比如你在撤销前又改了同一行代码),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
撤销完成后,将新生成的 revert 提交推送到远程(比如 main 分支):
git push origin main
比如要撤销 a87b9c0 到 9b8a7s6 之间的所有提交(注意顺序:旧提交在前,新提交在后):
git revert 9b8a7s6..a87b9c0
如果要撤销的是合并分支的提交,需要加 -m 参数指定父节点(通常用 1 表示主分支):
# 撤销合并提交(commit id为合并提交的id) git revert 合并提交id -m 1
| 特性 | git revert | git reset |
|---|---|---|
| 历史记录 | 保留所有提交(新增revert提交) | 删除指定提交后的所有记录 |
| 适用场景 | 已推送的远程代码 | 本地未推送的代码 |
| 团队协作 | 安全(不影响他人) | 危险(会覆盖远程历史) |
| 可追溯性 | 强(能看到撤销过程) | 弱(历史记录被删除) |
git revert 是安全的回退方式,核心是生成新提交抵消旧修改,适合已推送的代码。查看commit id → 执行git revert → 处理冲突(如有)→ 推送远程。到此这篇关于使用git实现revert的完整操作步骤的文章就介绍到这了,更多相关git实现revert步骤内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论