Skip to content

git-revert

还原一些现有提交。

概要

bash
'git revert' [--[no-]edit] [-n] [-m <parent-number>] [-s] [-S[<keyid>]] <commit>...
'git revert' (--continue | --skip | --abort | --quit)

描述

给定一个或多个现有提交,还原相关补丁引入的更改,并记录一些记录它们的新提交。这要求您的工作树是干净的(没有来自 HEAD 提交的修改)。

注意:git revert 用于记录一些新提交以撤消某些早期提交(通常只是一个有问题的提交)的效果。如果您想丢弃工作目录中所有未提交的更改,您应该查看 git-reset(1),特别是 --hard 选项。如果您想提取特定文件在另一个提交中的状态,您应该查看 git-restore(1),特别是 --source 选项。

选项

  • <commit>...:要还原的提交。
  • -e, --edit:使用此选项,git revert 将让您在提交还原之前编辑提交消息。
  • -m parent-number, --mainline parent-number:通常您无法还原合并,因为您不知道合并的哪一侧应视为主线。此选项指定主线的父编号(从 1 开始)。
  • --no-edit:使用此选项,git revert 将不启动提交消息编辑器。
  • --cleanup=<mode>:此选项确定在传递给提交机制之前如何清理提交消息。
  • -n, --no-commit:通常命令会自动创建一些提交。此标志将还原必要的更改应用到您的工作树和索引,但不进行提交。
  • -S[<keyid>], --gpg-sign[=<keyid>]:GPG 签名提交。
  • --no-gpg-sign:不 GPG 签名。
  • -s, --signoff:在提交消息末尾添加 Signed-off-by 尾部。
  • --strategy=<strategy>:使用给定的合并策略。
  • -X<option>, --strategy-option=<option>:将合并策略特定选项传递给合并策略。
  • --rerere-autoupdate:允许 rerere 机制使用记录的解决方案自动更新文件。
  • --no-rerere-autoupdate:不自动更新。
  • --reference:使用 --pretty=reference 格式引用提交。

排序器子命令

  • --continue:使用 .git/sequencer 中的信息继续正在进行的操作。
  • --skip:跳过当前提交并继续其余序列。
  • --quit:忘记当前正在进行的操作。
  • --abort:取消操作并返回到序列之前的状态。

示例

bash
# 还原 HEAD 中倒数第四个提交指定的更改
git revert HEAD~3

# 还原更改但不创建提交
git revert -n master~5..master~2

配置

  • revert.reference:将此变量设置为 true 使 git revert 表现得就像给出了 --reference 选项一样。

另请参阅

git-cherry-pick(1)

Git

git 套件的一部分

基于 CC BY-NC-SA 3.0 许可发布