git revert
git-revert
命名
git-revert - 恢复一些现有的提交
概要
git revert [--[no-]edit] [-n] [-m parent-number] [-s] [-S[<keyid>]] <commit>…
git revert --continue
git revert --quit
git revert --abort
描述
给定一个或多个现有的提交,恢复相关修补程序引入的更改,并记录一些记录它们的新提交。这要求你的工作树是干净的(不需要修改 HEAD 提交)。
注意:git revert用于记录一些新的提交以反转一些早期提交的影响(通常只是错误的提交)。如果你想扔掉工作目录中所有未提交的更改,你应该看到 git-reset [1],特别是--hard选项。如果你想提取特定文件,就像在另一个提交中那样,你应该看到 git-checkout [1],特别是git checkout <commit> -- <filename>语法。请谨慎使用这些替代方法,因为它们都会丢弃工作目录中的未提交更改。
选项
<commit>…
承诺恢复。有关拼写提交名称的更完整列表,请参阅 gitrevisions [7]。提交集也可以给出,但默认情况下不进行遍历,参见 git-rev-list [1] 及其--no-walk
选项。
-e --edit
使用此选项,git revert
将允许您在提交还原之前编辑提交消息。如果您从终端运行命令,这是默认值。
-m parent-number --mainline parent-number
通常您无法恢复合并,因为您不知道合并的哪一方应被视为主线。此选项指定主线路的父代号码(从1开始),并允许还原以相对于指定的父代的相反更改。
恢复合并提交声明您将永远不希望合并引入的树更改。因此,稍后的合并只会引入不是先前还原合并的祖先的提交引入的树更改。这可能是也可能不是你想要的。
有关更多详细信息,请参阅恢复错误合并的方法。
--no-edit
使用此选项,git revert
将不会启动提交消息编辑器。
-n --no-commit
通常,该命令会自动创建一些提交日志消息,提交哪些提交已恢复。此标志应用必要的更改以将命名的提交恢复到您的工作树和索引,但不进行提交。此外,使用此选项时,您的索引不必与 HEAD 提交匹配。回复是针对索引的开始状态完成的。
将多个提交的效果还原为连续的索引时,这非常有用。
-S<keyid> --gpg-sign=<keyid>
GPG 标志提交。该keyid
参数是可选的,并且默认为提交者身份; 如果指定,它必须粘贴到选项没有空格。
-s --signoff
在提交消息的末尾添加 Signed-off-by 行。有关更多信息,请参阅 git-commit [1] 中的 signoff 选项。
--strategy=<strategy>
使用给定的合并策略。只能使用一次。有关详细信息,请参阅 git-merge [1] 中的 MERGE STRATEGIES 部分。
-X<option> --strategy-option=<option>
将合并策略特定选项传递给合并策略。有关详细信息,请参阅 git-merge [1]。
Sequencer子命令
--continue
使用中的信息继续正在进行的操作.git/sequencer
。可以在解决失败的 cherry-pick 或恢复中的冲突后继续使用。
--quit
忘记当前正在进行的操作。在 cherry-pick 或恢复失败后可用于清除音序器状态。
--abort
取消操作并返回到预序列状态。
例子
git revert HEAD~3
恢复 HEAD 中最后第四次提交指定的更改,并使用恢复的更改创建一个新的提交。
git revert -n master~5..master~2
将提交完成的更改从 master(包含)中的第五次提交恢复为 master(包含)中的第三次提交,但不要使用已还原的更改创建任何提交。恢复只修改工作树和索引。