设置和配置
获取和创建项目
基本快照
分支与合并
共享和更新项目
检查和比较
打补丁
调试
电子邮件
外部系统
服务器管理
指南
管理
底层命令
- 2.50.1 → 2.53.0 无变更
-
2.50.0
2025-06-16
- 2.44.1 → 2.49.1 无更改
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 无更改
-
2.43.0
2023-11-20
- 2.39.1 → 2.42.4 无更改
-
2.39.0
2022-12-12
- 2.38.1 → 2.38.5 无更改
-
2.38.0
2022-10-02
- 2.37.1 → 2.37.7 无更改
-
2.37.0
2022-06-27
- 2.30.1 → 2.36.6 无变更
-
2.30.0
2020-12-27
- 2.27.1 → 2.29.3 无更改
-
2.27.0
2020-06-01
- 2.23.1 → 2.26.3 无更改
-
2.23.0
2019-08-16
- 2.22.1 → 2.22.5 无更改
-
2.22.0
2019-06-07
- 2.10.5 → 2.21.4 无更改
-
2.9.5
2017-07-30
- 2.8.6 无更改
-
2.7.6
2017-07-30
-
2.6.7
2017-05-05
- 2.1.4 → 2.5.6 无更改
-
2.0.5
2014-12-17
概要
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 选项。请谨慎使用这些替代方案,因为它们都会丢弃工作目录中未提交的更改。
有关这三个命令之间的区别,请参阅 git[1] 中的“Reset、restore 和 revert”部分。
选项
- <提交>…
-
要还原的提交。有关提交名称的更多完整拼写方式,请参见 gitrevisions[7]。也可以提供提交集合,但默认情况下不进行遍历,请参见 git-rev-list[1] 及其
--no-walk选项。 - -e
- --edit
-
使用此选项,git revert 将允许您在提交还原之前编辑提交说明。如果您在终端运行该命令,这是默认操作。
- -m 父编号
- --mainline 父编号
-
通常您无法还原合并提交,因为您不知道合并的哪一边应被视为基线。此选项指定基线的父编号(从 1 开始),并允许 revert 还原相对于指定父节点的更改。
还原一个合并提交意味着您声明永远不再需要该合并引入的树更改。因此,后续的合并将仅引入由非先前还原合并的祖先提交所带来的树更改。这可能符合也可能不符合您的预期。
更多详情请参见 revert-a-faulty-merge 指南。
- --no-edit
-
使用此选项,git revert 将不会启动提交说明编辑器。
- --cleanup=<模式>
-
此选项决定在提交给提交机制之前如何清理提交说明。详情请见 git-commit[1]。特别地,如果 <模式> 被设为
scissors(剪刀),在发生冲突的情况下,剪刀线将被追加到MERGE_MSG中再传递。 - -n
- --no-commit
-
通常该命令会自动创建一些提交,并在提交日志消息中注明还原了哪些提交。此标记会将还原指定提交所需的更改应用到您的工作树和索引,但不创建提交。此外,使用此选项时,您的索引不需要与 HEAD 提交匹配。还原操作将针对索引的起始状态进行。
当需要连续将多个提交的效果还原到索引时,这非常有用。
- -S[<密钥ID>]
- --gpg-sign[=<密钥ID>]
- --no-gpg-sign
-
GPG 签名提交。*keyid* 参数是可选的,默认为提交者身份;如果指定,则必须将其紧贴选项,中间无空格。*--no-gpg-sign* 对于抵消 *commit.gpgSign* 配置变量和先前的 *--gpg-sign* 非常有用。
- -s
- --signoff
-
在提交说明末尾添加
Signed-off-by签名行。更多信息请见 git-commit[1] 中的 signoff 选项。 - --strategy=<策略>
-
使用给定的合并策略。应该只使用一次。详情请见 git-merge[1] 中的 MERGE STRATEGIES 部分。
- -X<选项>
- --strategy-option=<选项>
-
将合并策略特定的选项传递给合并策略。有关详细信息,请参阅 git-merge[1]。
--rerere-autoupdate--no-rerere-autoupdate-
在 rerere 机制使用记录的冲突解决来更新工作树中的文件后,允许它也用解决结果更新索引。
--no-rerere-autoupdate是一个很好的方式来双重检查rerere所做的操作,并在使用单独的gitadd将结果提交到索引之前,捕获潜在的错误合并。 - --reference
-
日志消息的正文不再以 "This reverts <被还原提交的全对象名>." 开头,而是使用 "--pretty=reference" 格式引用提交(参见 git-log[1])。配置变量
revert.reference可用于默认启用此选项。
讨论
虽然 git 会自动创建基础提交说明,但强烈建议解释为什么要还原原始提交。此外,重复还原“还原”会导致主题行越来越笨拙,例如 Reapply "Reapply "<original-subject>""。请考虑将这些内容重新改写得更简短、更独特。
配置
本节中以下所有内容均从 git-config[1] 文档中选择性地包含。内容与彼处相同: