# 在 GitHub Copilot 命令行界面 (CLI) 会话期间回滚更改

将您的 Copilot 命令行界面（CLI） 会话回退到先前的提示，以撤销更改并将存储库恢复到之前的状态。

## 介绍

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

输入提示时，Copilot 命令行界面（CLI） 首先会拍摄您的工作区状态快照。 如果需要，您可以利用快照回滚到会话中的该点。 可以通过按 <kbd>Esc</kbd> 两次或使用 `/undo` 斜杠命令触发倒退。

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

## 先决条件

* **您必须在具有至少一个提交记录的 Git 存储库中工作。**
  Copilot 命令行界面（CLI） 使用 Git 操作来跟踪和还原工作区状态。
* **快照必须存在。** 每次您在 CLI 会话中与Copilot开始交互时，都会自动创建快照。 您无法回滚在会话中第一次提示前所做的更改，也无法回滚到跳过快照创建步骤的存储库状态。请参阅 [无法回滚的更改](/zh/copilot/concepts/agents/copilot-cli/cancel-and-roll-back#changes-that-cant-be-rolled-back)。

## 使用双击 Esc 键回滚

> \[!WARNING]
>
> * 倒退会将整个工作区还原到所选快照中的状态。 这将还原在该点之后所做的所有更改——不仅包括由Copilot所做的更改，还包括任何手动编辑以及由 shell 命令导致的更改。 删除快照后在工作区中创建的任何新文件，而不考虑其 Git 状态。
> * 倒回操作无法撤消。 回滚到快照后，该点后的所有快照和会话历史记录都将永久删除。

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

1. 确保输入区域为空。 如果输入区域中有文本，则快速连续按 <kbd>Esc</kbd> 两次会清除文本。

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

   回退选取器列出了当前会话的可用快照，并列出了最新的快照。 将显示十个最新的快照。 如果有 10 个以上的快照可用，则可以使用 <kbd>箭头</kbd> 键向下滚动到以前的快照。

   对于每个快照，将显示你输入的提示的开头，并指示你提交了该快照的时间。

3. 选择要回滚到的快照。 当输入相关提示时，这将把你返回到存储库的状态。

   > \[!NOTE]
   > 存储库会在 Copilot 开始处理提示之前立即回滚到其状态，而不是在处理完提示后立即回滚。

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

## 使用 `/undo` 斜线命令回滚

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

这两个命令都生成相同的结果，即在Copilot空闲时按两次<kbd>Esc</kbd>，并且在输入区域中没有文本。

## 验证回滚

回滚后，可以使用 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)