撤消更改
Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019 |TFS 2018
Visual Studio 2022 |Visual Studio 2019 |Visual Studio 2017 |Visual Studio 2015
如果要撤消 Git 存储库中的更改,请先决定要撤消的更改类型。 例如,您可能希望:
- 通过将文件还原到其上次提交的版本,放弃对文件的未提交更改。 还可以将文件还原到任何提交的版本。
- 通过将分支重置为以前的提交,将分支还原到以前的状态。
- 通过创建反转更改的新提交来撤消共享提交所做的更改。 由于此方法不会重写现有的提交历史记录,因此它适用于扭转推送的提交以及其他人正在使用的提交所做的更改。
- 修改上次提交以修改其内容或消息。 有关详细信息,请参阅 如何更新上次提交。
- 通过创建包含修补程序的新 提交 来修复之前提交中引入的问题。 有关详细信息,请参阅 如何创建提交。
本文介绍如何执行以下操作:
- 放弃对文件的未提交更改
- 将分支还原到以前的状态
- 撤消共享提交所做的更改
放弃对文件的未提交更改
如果已更改文件但尚未提交这些更改,则可以使用 Git 签出 快速放弃更改并将文件还原为其上次提交的版本。
指定提交 ID 时,Git checkout
还可以将文件还原到任何提交的版本。
警告
如果可能希望重新应用 Git checkout
将放弃的更改,请考虑改 用 这些更改。
Visual Studio 支持通过将文件还原到其上次提交的版本来放弃对文件的未提交更改。
Visual Studio Git
在 “Git 更改 ”窗口中,使用要放弃的更改标识文件。 如果文件位于 “暂存更改 ”部分中,请右键单击该文件,然后选择 “取消设置”。 未标记的文件显示在 “更改 ”部分中。
如果文件位于“ 更改 ”部分中,请右键单击该文件,然后选择 “撤消更改 ”以放弃自上次提交以来对文件的所有更改。
Visual Studio 团队资源管理器
在团队资源管理器的“更改”视图中,使用要放弃的更改标识文件。 如果文件位于 “暂存更改 ”部分中,请右键单击该文件,然后选择 “取消设置”。 “ 更改 ”部分显示未标记的文件
如果文件位于“ 更改 ”部分中,请右键单击该文件,然后选择 “撤消更改 ”以放弃自上次提交以来对文件的所有更改。
Visual Studio 支持通过将文件还原为上次提交中的文件版本来放弃对文件的所有未提交更改。
在团队资源管理器中打开 “更改 ”视图。
在 “更改” 部分下,找到要还原到以前的版本的文件。 如果已暂存更改,请右键单击并选择 Unstage,将其从“暂存更改”部分删除。
右键单击该文件,然后选择“ 撤消更改”。
可以使用 Git checkout
命令放弃对文件的未提交更改,方法是将该文件还原到其上次提交的版本:
git checkout <file>
例如, git checkout README.md
放弃对 README.md
文件的未提交更改。
当指定唯一标识提交的部分或完整提交 ID 时,Git checkout
还支持将文件还原到以前提交的版本:
git checkout <commit ID> <file>
有关查找提交 ID 的详细信息,请参阅 查找提交 ID。
注意
使用 Git checkout
命令还原文件不同于其典型用途,即在 分支之间切换。 命令 checkout
输出会告诉你它是在分支之间切换还是更新文件,如果不清楚你正在尝试执行哪些操作,则会发出警告。
将分支还原到以前的状态
可以使用 Git 重置 将分支还原到以前的状态,将分支重置为以前的提交。 Git reset
会影响所有分支文件夹中的所有文件。
Git reset
有几个选项。 默认选项是将分支还原到以前的提交,但保留所有后续更改作为未提交的更改。 另一种方法是放弃对自该提交以来所有分支文件的所有更改,将分支还原到以前的提交。
警告
如果上次提交已推送并与他人共享,请不要在上次提交之前将分支重置为提交。 这样做将导致本地分支历史记录不再与远程分支历史记录匹配。 对于共享分支,请参阅 撤消共享提交所做的更改。
Visual Studio Git
- 在菜单栏中,选择 “Git > 视图分支历史记录 ”以打开当前分支的 “历史记录 ”选项卡。
Visual Studio 团队资源管理器
- 在团队资源管理器的“更改”视图中,选择“操作>视图历史记录”以打开当前分支的“历史记录”选项卡。
在当前分支的 “历史记录 ”选项卡中,右键单击要重置的提交,然后选择“ 重置 > 删除更改” (--硬) 将分支重置为所选提交,并删除自该提交以来所有分支文件的所有更改。 或者,选择 “重置 > 保留更改” (混合) 将分支重置为所选提交,并将所有后续更改保留为未标记的更改。
在团队资源管理器中打开 “更改 ”视图。
从下拉列表中选择 “操作 ”并选择 “查看历史记录 ”。
在显示的历史记录窗口中,右键单击提交以重置存储库,并从上下文菜单中选择“ 重置 ”。
选择 “重置和删除更改...”。
可以使用 Git reset
将分支还原到上一次提交中的状态。 Git reset
命令可用于各种标志:
- 该
--hard
标志指示 Git 将分支重置为指定的提交,并放弃所有后续更改。 请谨慎使用此选项,因为无法使用此选项。
- 该
--mixed
标志指示 Git 将分支重置为指定的提交,但保留所有后续更改作为未标记的更改。 此选项为默认值。
- 该
--soft
标志告知 Git 将分支重置为指定的提交,但按照其以前的状态保留所有后续更改(暂存和未标记的更改)。
Git reset
的常见用途是 --hard
,可以选择放弃自上次提交以来所有文件中未提交的所有更改:
git reset --hard
若要将分支硬重置为与上次提交不同的提交,请指定提交 ID 或唯一标识提交的部分提交 ID:
git reset --hard <commit ID>
有关查找提交 ID 的详细信息,请参阅 查找提交 ID。
撤消共享提交所做的更改
可以使用 Git 还原 撤消提交所做的更改,以创建新的提交,以撤消这些更改。 Git revert
不会删除原始提交。 此方法适用于撤消共享提交所做的更改,因为 Git revert
不会更改以前的提交历史记录,因此本地和远程分支历史记录会继续匹配。
Visual Studio Git
- 从菜单栏中,选择 “Git > 视图分支历史记录 ”以打开当前分支的 “历史记录 ”选项卡。
Visual Studio 团队资源管理器
- 在团队资源管理器的“更改”视图中,选择“操作>视图历史记录”以打开当前分支的“历史记录”选项卡。
在当前分支的 “历史记录 ”选项卡中,右键单击要还原的提交,然后选择 “还原 ”以创建新提交,以撤消所选提交所做的更改。
在团队资源管理器中打开 “更改 ”视图。 选择 “操作” ,然后从下拉列表中选择 “查看历史记录 ”。 在显示的历史记录窗口中,右键单击要撤消的提交,并从上下文菜单中选择 “还原 ”。
可以使用 Git revert
命令撤消提交所做的更改,并使用反向更改创建新的提交。 其更改已逆转的提交保留在 Git 历史记录中。
git revert <commit ID>
如果还原操作成功,Git 将打开一个编辑器窗口,提示输入新提交的提交消息。
如果在还原操作期间发生冲突,Git 会通知你。 可以解决冲突,然后运行,也可以运行git revert --continue
git revert --abort
以撤消还原操作。
查找提交 ID
可以使用 Git log
命令获取提交 ID。 标志 --oneline
缩写输出。
git log --oneline <branch>
Git log
命令首先列出最新的提交,从指定分支的提示处开始提交, (当前分支(如果未指定) ,然后循环访问上级提交)。 缩写输出中的每个提交 ID 都是唯一标识提交的部分 SHA-1 校验和。 例如, git log --oneline main
可能会输出:
e745d06 (HEAD -> main) Add a test initialization class
31da50b Add network switch test
0c14391 Add readme file
32e3946 Add project files.
后续步骤
相关文章