# 回退 GitHub Copilot CLI 会话期间所做的更改

将 Copilot CLI 会话倒退到以前的提示，以撤消会话历史记录中的更改，并选择性地还原文件。

## 介绍

在交互式 Copilot CLI 会话中工作时， Copilot 可以更改文件、运行 shell 命令和修改存储库。 如果结果不是你所期望的，可以返回到会话中的之前的某个点以撤销这些更改。

可以在空闲时Copilot按 <kbd>Esc</kbd> 两次，或使用`/undo`斜杠命令（或其别名`/rewind`）触发回退。

选择要回退到的点时，可以选择是 **仅倒退对话** 还是 **倒退对话和还原文件**。

Rewind 在任何目录中工作，包括不是 Git 存储库的文件夹。 它仅还原已更改的文件 Copilot 。

本文介绍如何回滚更改。 有关在会话中倒退到早期点的更多概念性信息，请参阅 [取消 GitHub Copilot CLI 操作并回滚更改](/zh/copilot/concepts/agents/copilot-cli/cancel-and-roll-back)。

## 先决条件

* **回退点必须存在。** 无法回退到会话中你的第一个提示之前。
* **文件还原仅适用于跟踪文件更改的会话。** 如果在启用文件更改跟踪之前恢复启动的会话，则仅提供对话回退。 启动一个新会话，以便能够还原文件更改。
* **文件还原会跳过自己更改的文件。** 当前内容不再与上次写入的内容 Copilot 匹配的文件（例如，因为之后编辑了它们），并且文件太大而无法备份，则不会被覆盖。
* **Rewind 不适用于远程支持的会话**，或者会话仍在进行中。

## 双击 Esc 键回退

> \[!WARNING]
>
> * 回退无法撤销。 一旦回滚，之后的会话历史记录将被永久删除。
> * 如果选择还原文件， Copilot 则仅还原它更改的文件，并跳过其当前内容不再与上次写入的内容匹配的任何文件，因此不会覆盖你自己的以后的编辑。

按 <kbd>Esc</kbd> 两次只会在空闲时 Copilot 打开回退选取器。 有关操作正在进行时双 <kbd>Esc</kbd> 执行的操作的详细信息，请参阅 [取消 GitHub Copilot CLI 操作并回滚更改](/zh/copilot/concepts/agents/copilot-cli/cancel-and-roll-back#what-pressing-esc-does-in-different-situations)。

Copilot完成响应您输入的提示后：

1. 确保输入区域为空，并且没有正在进行的工作。 如果输入区域中有文本，则快速连续按 <kbd>Esc</kbd> 两次会清除文本，而不是打开选取器。

2. 连续两次按 <kbd>Esc</kbd> 打开回退选取器。

   选取器列出了当前会话的可用回退点，其中最先列出最近一个。 同时显示最近的十个点。 如果有 10 个以上的键，请使用 <kbd>“ 和</kbd><kbd>” 箭头</kbd> 键滚动它们。
   对于每个回退点，将显示你输入的提示的开始时间以及你提交的时间。 对于已更改文件的轮次，也会显示该轮次添加和删除的行数。

3. 选择倒退点，然后按 <kbd>Enter</kbd>。

   选择回退点将打开一个操作菜单，可在其中选择 **“仅对话** ”或“ **对话 +”文件**。 当该轮次和任何以后轮次都未更改任何可还原的文件时，后者将不可用。 在还原之前， Copilot 显示更改的按文件预览，以便可以确认。

   > \[!NOTE]
   > 回退将相对于状态应用， **然后**Copilot 立即开始处理提示，而不是在处理提示后立即应用。

   所选的提示将显示在输入区域中，以便根据需要编辑并重新提交它。

## 使用 `/undo` 斜杠命令回退

`/undo`斜杠命令及其别名`/rewind`提供了打开回退选取器的另一种方法。

两个命令产生的结果与在 <kbd></kbd> 空闲且输入区域中没有文本时按两次 Copilot 相同。

## 验证回滚

回滚后，可以使用 Git 命令来验证存储库的状态，并确认它是否符合预期。

通过键入 `!` ，可以直接从 Copilot CLI 输入提示运行 shell 命令，因此无需退出 CLI 即可检查存储库状态。

| 要执行的操作               | 输入此命令                    |
| -------------------- | ------------------------ |
| 检查哪些文件显示为已修改、暂存或未跟踪。 | `! git status`           |
| 显示当前提交的 SHA 和提交消息。   | `! git log --oneline -1` |
| 查看未暂存的更改。            | `! git diff`             |

## 延伸阅读

* [GitHub Copilot CLI 命令参考](/zh/copilot/reference/copilot-cli-reference/cli-command-reference)