好的,阿杰,我们来系统梳理一下 “版本回退”在 Git 中的几种方式,重点讲解 revert
的用法及区别。
1️⃣ 版本回退的概念
在 Git 中,“版本回退”主要有三种常用方式:
git reset
- 直接移动
HEAD
指针 - 可以修改暂存区和工作区
- 常用于本地撤销提交
- 危险性:会修改历史,慎用于共享分支
- 直接移动
git checkout
/git restore
- 用于撤销工作区或暂存区修改
- 不会修改提交历史
git revert
- 创建一个新的提交,撤销指定提交的内容
- 安全:不会修改已有提交历史
- 常用于公共分支回退
2️⃣ git revert
详解
2.1 概念
revert
用于 撤销某次提交的内容,但保留历史- 会生成一个 新的提交,把原来提交的改动反向应用
2.2 基本语法
# 撤销指定提交
git revert <commit_id>
# 撤销多个提交(按时间顺序从旧到新)
git revert <old_commit>^..<new_commit>
2.3 示例
假设提交历史如下:
A - B - C - D (HEAD)
- 想撤销
C
的修改:
git revert <C的commit_id>
- 历史变为:
A - B - C - D - C' (HEAD)
C'
是新提交,内容与C
相反
2.4 常用选项
选项 | 说明 |
---|---|
--no-commit | 不立即生成提交,可手动修改后再提交 |
--edit | 编辑提交信息 |
-m <parent-number> | 用于撤销 merge 提交,需要指定主父分支 |
3️⃣ revert
vs reset
对比
特性 | revert | reset |
---|---|---|
修改历史 | 不修改历史,安全 | 修改历史,危险(慎用公共分支) |
生成提交 | 会生成新的提交 | 不生成提交(除非用 --soft 只重置 HEAD) |
公共分支使用 | 安全 | 不建议 |
撤销范围 | 单条或多条提交 | HEAD 指定范围 |
4️⃣ 使用场景
- 公共分支撤销错误提交 →
git revert
- 本地错误提交,不影响远程 →
git reset
或git revert
- 临时撤销工作区修改 →
git restore
或git checkout
小结口诀
reset 改历史,revert 生成逆向提交,checkout/restore 改工作区
发表回复