全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-11 6 分钟 ✍️ juanwangdev

git revert 撤销提交

git revert 通过创建新提交来撤销指定提交的变更,保持历史完整。

什么是 git revert

revert 创建一个新提交,内容是撤销指定提交的变更:

  • 不删除原提交
  • 不改变历史
  • 创建反向提交
  • 安全可追溯

revert vs reset

特性revertreset
历史改变不改变改变历史
新提交创建不创建
安全性安全可能丢失
已推送可以使用不推荐
适用场景公开历史本地历史

基本用法

Bash
# 撤销最近一次提交
git revert HEAD

# 撤销指定提交
git revert <commit-hash>

# 撤销多个提交
git revert <commit1> <commit2>

# 撤销提交范围
git revert <start>..<end>

revert 示例

Bash
# 撤销最近提交
$ git revert HEAD
[main d4e5f6g] Revert "添加新功能"
 1 file changed, 5 deletions(-)

# 查看历史
$ git log --oneline
d4e5f6g Revert "添加新功能"   # 新的撤销提交
a1b2c3d 添加新功能            # 原提交仍存在
b2c3d4e 修复bug

revert 流程

Bash
原提交:
commit A: 添加 content = "Hello"

revert 后:
commit A: 添加 content = "Hello"  (仍存在)
commit B: 删除 content = "Hello"  (反向提交)

结果:content 被移除,但历史完整

常用选项

选项说明
-n, --no-commit撤销但不自动提交
-m, --mainline指定撤销合并提交的父提交
-e, --edit编辑撤销提交信息

撤销合并提交

Bash
# 合并提交有两个父提交,需指定撤销哪个
git revert -m 1 <merge-commit>

# -m 1: 撤销相对于第一个父提交的变更
# -m 2: 撤销相对于第二个父提交的变更

撤销但不提交

Bash
# 撤销变更但不自动提交
git revert -n HEAD

# 查看变更
git status

# 手动提交
git commit -m "手动提交撤销"

处理 revert 冲突

Bash
# revert 时可能产生冲突
$ git revert a1b2c3d
CONFLICT (content): conflict in main.go

# 解决冲突
# 1. 编辑冲突文件
# 2. git add <file>
# 3. git revert --continue

# 或放弃撤销
git revert --abort

revert 使用场景

撤销已推送的错误提交

Bash
# 推送后发现 bug
git revert <commit>
git push
# 安全撤销,不影响他人

临时撤销测试

Bash
# 撤销某提交进行测试
git revert -n <commit>
# 测试验证后决定是否提交

逐步撤销多个提交

Bash
# 撤销最近 3 个提交
git revert HEAD~3..HEAD

# 按顺序撤销,保持历史清晰

revert 提交信息

text
# 默认提交信息
Revert "原提交信息"
This reverts commit <hash>.

# 自定义提交信息
git revert -e HEAD
# 编辑器打开,修改提交信息

revert 注意事项

text
revert 后的提交可能被再次 revert:
A → B → C(revert B)→ D(revert C)
此时 B 的变更会重新出现

建议:
- revert 次数不宜过多
- 理解 revert 的链式影响

对已推送的提交,使用 revert 而非 reset,保持历史完整。

要点总结

  1. revert 创建反向提交,不删除原提交
  2. 安全撤销,不改变历史
  3. 已推送的提交只能用 revert
  4. 合并提交需用 -m 指定父提交
  5. 冲突时解决后用 --continue 继续

📝 发现内容有误?点击此处直接编辑

← 上一篇 git reflog 引用日志
下一篇 → 分离 HEAD 状态处理
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库