撤消更改

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

如果要撤消 Git 存储库中的更改,请先确定要撤消的更改类型。 例如,您可能希望:

  • 通过将文件还原到其上次提交的版本来放弃对文件所做的未提交的更改。 还可将文件还原到任何已提交的版本。
  • 通过将分支重置为先前的提交来将其还原到以前的状态。
  • 通过创建用于撤消更改的新提交来撤消由共享提交所做的更改。 由于此方法不会重写现有的提交历史记录,因此适用于撤消由其他人推送并正在使用的提交所做的更改。
  • 修改上次提交以修改其内容或消息。 有关详细信息,请参阅如何更新上次提交
  • 通过创建包含修补程序的新提交来修复先前提交中引入的问题。 有关详细信息,请参阅如何创建提交

本文介绍如何执行以下操作:

  • 放弃对文件所做的未提交的更改
  • 将分支还原到之前的状态
  • 撤消由共享提交所做的更改

放弃对文件所做的未提交的更改

如果对文件进行了更改但尚未提交这些更改,则可以使用 Git checkout 快速放弃更改并将文件还原为其上次提交的版本。

如果指定提交 ID,Git checkout 还可以将文件还原为任何已提交的版本。

警告

如果可能想要重新应用 Git checkout 将放弃的更改,请考虑改为储藏这些更改。

Visual Studio 2022 通过使用 Git 菜单、Git 更改解决方案资源管理器中的上下文菜单提供 Git 版本控制体验。 Visual Studio 2019 版本 16.8 还提供了团队资源管理器 Git 用户界面。 有关详细信息,请参阅 Visual Studio 2019 - 团队资源管理器选项卡。

Visual Studio 支持通过将文件还原到其上次提交的版本来放弃对文件所做的未提交的更改。

Git 更改窗口中,确定包含要放弃的更改的文件。 如果文件位于暂存更改部分,请右键单击该文件并选择取消暂存。 非暂存文件显示在更改部分。

Visual Studio 中暂存文件的上下文菜单选项的屏幕截图。

如果文件位于更改部分,请右键单击该文件并选择撤消更改,以放弃自上次提交以来对该文件所做的所有更改。

Visual Studio 中已更改文件的上下文菜单选项的屏幕截图。

将分支还原到之前的状态

可使用 Git reset 将分支重置为之前的提交,从而将分支还原到之前的状态。 Git reset 会影响所有分支文件夹中的所有文件。

Git reset 有几个选项。 默认选项是将分支还原到之前的提交,但将所有后续更改保留为未提交的更改。 另一个选项是通过放弃自该提交以来对所有分支文件所做的所有更改,将分支还原到之前的提交。

警告

如果最后一次提交已推送并与其他人共享,则不要将分支重置为上次提交之前的提交。 这样做将导致本地分支历史记录不再与远程分支历史记录匹配。 对于共享分支,请参阅撤消由共享提交所做的更改

  1. 从菜单栏中选择 Git > 查看分支历史记录,以打开当前分支的历史记录选项卡。

    Visual Studio 中的 Git 菜单中“查看分支历史记录”选项的屏幕截图。

  2. 在当前分支的历史记录选项卡中,右键单击要重置的提交,然后选择重置>删除更改(--硬),将分支重置为选定的提交并删除自该提交以来对所有分支文件所做的所有更改。 也可选择重置 >保留更改(--混合),将分支重置为选定的提交并将所有后续更改保留为非暂存更改。

    Visual Studio 的“历史记录”窗口中提交的上下文菜单中“重置”选项的屏幕截图。

撤消由共享提交所做的更改

可通过使用 Git revert 创建用于撤销由提交所做的更改的新提交来撤消这些更改。 Git revert 不会删除原始提交。 此方法适用于撤消由共享提交所做的更改,因为 Git revert 不会更改以前的提交历史记录,因此本地分支历史记录和远程分支历史记录继续匹配。

  1. 从菜单栏中选择 Git > 查看分支历史记录,以打开当前分支的历史记录选项卡。

    Visual Studio 中的 Git 菜单中“查看分支历史记录”选项的屏幕截图。

  2. 在当前分支的历史记录选项卡中,右键单击要还原的提交并选择还原,以创建可撤消由所选提交所做的更改的新提交。

    Visual Studio 的“历史记录”窗口中提交的上下文菜单中的“还原”选项的屏幕截图。

后续步骤