Git 回退



git revert 命令创建一个新的提交,用于撤销指定先前提交的更改,而不会更改提交历史。

  • 它常用于撤销修改,同时保持项目的过去完整。

  • 在共享仓库中撤销更改时,此命令比git reset更安全。

要点

在使用git revert 命令之前,您应该记住一些要点

  • 在执行命令之前,确保我们的工作区是干净的。

  • 使用git reset --hard 删除未提交的更改,并使用git restore --source 从较早的提交中恢复某些文件。

  • 这两个选项都将删除我们目录中任何未提交的工作。

语法

git revert <commit>

选项

git revert 命令具有以下选项

<commit>…​

  • <commit> 指示您希望回退的提交。

  • 您可以在一次操作中提及多个提交进行回退。

  • 使用git-rev-list 以及--no-walk 选项允许我们遍历提交集,这在默认情况下不会执行。

-e

--edit

  • 在完成回退之前,您可以使用git revert 命令中的-e--edit 选项更改提交消息。

  • 在使用终端执行命令时,默认情况下启用此选项。

  • 您可以根据需要更改回退提交消息。

-m parent-number

--mainline parent-number

  • 在 Git 中,-m parent-number 选项指示合并提交的父级,在合并回退的情况下用作主线

  • 您可以通过选择父级编号(从 1 开始)来指定哪一侧的合并用作撤销修改的参考。

  • 通过从回退合并的祖先中删除更改,回退合并提交实际上会丢弃在该合并期间所做的更改。

  • 这可能会影响后续合并。

--no-edit

  • 当在git revert 命令中使用--no-edit 选项时,Git 不会打开提交消息编辑器。

  • 使用此选项时,Git 会回退到自动生成的提交消息。

  • 无需用户输入或修改。

--cleanup=<mode>

  • 在提交更改之前,Git 会根据--cleanup=<mode> 选项格式化和清理提交消息。

  • 您可以将<mode> 设置为您想要的任何值,例如scissors,这会在发生冲突的情况下向MERGE_MSG 添加scissors 行。

-n

--no-commit

  • 使用 Git,您可以将回退更改应用于我们的工作区和索引,而无需生成提交,方法是使用-n--no-commit 选项。

  • 这使您可以在最终确定更改之前查看或编辑更改,并依次回退多个提交。

-S[<keyid>]

--gpg-sign[=<keyid>]

--no-gpg-sign

  • 使用-S[<keyid>]--gpg-sign[=<keyid>] 选项使用 GPG 密钥对提交进行签名。

  • 您可以省略<keyid> 参数,但如果您这样做,它必须紧跟在选择之后,中间没有空格,并且它表示要使用哪个 GPG 密钥。

  • 如果未指定密钥,则默认使用提交者的身份密钥。

  • 当使用--no-gpg-sign 选项(禁用提交的 GPG 签名)时,任何允许自动签名的全局设置或任何先前使用的--gpg-sign 选项都将被覆盖。

-s

--signoff

  • 当使用-s--signoff 选项时,提交消息将以Signed-off-by 行完成。

  • 此行通常用于遵守项目中的贡献要求,包含提交者的姓名和电子邮件地址,并表明他们对更改承担责任。

--strategy=<strategy>

  • 使用--strategy=<strategy> 选项指定合并分支时要使用的合并策略。

  • Git 使用此选项来确定如何解决冲突以及如何合并来自不同分支的更改,因此您应该每个合并命令只使用一次。

-X<option>

--strategy-option=<option>

  • 您可以使用-X<option>--strategy-option=<option> 选项为正在使用的合并策略提供额外的、特定于策略的参数。

  • 这使您可以根据所选策略的选择对合并的执行进行细粒度的控制。

--rerere-autoupdate

--no-rerere-autoupdate

  • 通过使用--rerere-autoupdate 选项,Git 可以使用记录的冲突解决结果自动更新索引。

  • 在手动将解决方案添加到索引之前,您可以使用--no-rerere-autoupdate 在工作区中查看并确认它。

--reference

  • 通过以更简洁的方式引用原始提交,--reference 选项更改回退提交的日志消息正文。

  • --pretty=reference 格式指定较短的引用格式,该格式用于替换默认消息格式This reverts <full-object-name-of-the-commit-being-reverted>

  • 此行为可以通过使用revert.reference 配置设置设置为默认值。

总而言之,git revert 命令创建一个新的提交来撤销先前提交的更改。在共享仓库中使用它是安全的,因为它不会更改提交历史。上面提到的选项提供了更大的灵活性,例如在不提交的情况下回退和处理合并提交。

广告