- Git 入门
- Git - 首页
- Git - 版本控制
- Git - 基本概念
- Git - 命令行
- Git - 安装
- Git - 首次设置
- Git - 基本命令
- Git - 获取帮助
- Git - 工具
- Git - 速查表
- Git - 术语
- Git 分支
- Git - 简述分支
- Git - 创建新分支
- Git - 切换分支
- Git - 分支和合并
- Git - 合并冲突
- Git - 管理分支
- Git - 分支工作流程
- Git - 远程分支
- Git - 跟踪分支
- Git - 变基
- Git - 变基与合并
- Git - 合并提交
- Git 操作
- Git - 克隆操作
- Git - 打标签操作
- Git - 别名操作
- Git - 提交操作
- Git - 暂存操作
- Git - 移动操作
- Git - 重命名操作
- Git - 推送操作
- Git - 拉取操作
- Git - Fork 操作
- Git - 修补操作
- Git - 差异操作
- Git - 状态操作
- Git - 日志操作
- Git - HEAD 操作
- Git - origin master
- Git 撤销
- Git - 撤销更改
- Git - 检出
- Git - 回退
- Git - 重置
- Git - 恢复操作
- Git - Rm
- Git - 切换操作
- Git - Cherry-pick
- Git - 修正
- Git 在服务器上
- Git - 本地协议
- Git - 智能 HTTP 协议
- Git - 哑 HTTP 协议
- Git - SSH 协议
- Git - Git 协议
- Git - 在服务器上获取 Git
- Git - 设置服务器
- Git - 守护进程
- Git - GitWeb
- Git - GitLab
- Git - 第三方托管选项
- 分布式 Git
- Git - 分布式工作流程
- Git - 为项目贡献代码
- Git - 维护项目
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 命令创建一个新的提交来撤销先前提交的更改。在共享仓库中使用它是安全的,因为它不会更改提交历史。上面提到的选项提供了更大的灵活性,例如在不提交的情况下回退和处理合并提交。