介绍
在交互式 Copilot 命令行界面(CLI) 会话中工作时, Copilot 可以更改文件、运行 shell 命令和修改存储库。 如果结果不是你所期望的,可以返回到会话中的之前的某个点以撤销这些更改。
可以通过按 Esc 两次,或使用 /undo 斜杠命令(或其别名 /rewind)触发回退。
Copilot 命令行界面(CLI) 支持两种回退方式:
- 基于 Git 的倒退:回滚到在提示开始时拍摄的工作区快照。
- 基于工具的倒退:仅允许你回退对话历史记录,或回退对话历史记录并还原已更改的文件 Copilot 。
注意
基于工具的回退目前是一项实验性功能,仅当已使用 /experimental on 斜杠命令或 --experimental 命令行选项时才可用。
Copilot 命令行界面(CLI) 根据环境自动选择以下回退行为之一,以提供尽可能最佳的回退体验。
若要判断当前启用的是哪种回退行为:
- 如果选取器立即显示快照,并且选择其中一个会执行回滚,说明你使用的是 基于 Git 的回溯。
- 如果选择回退点时会打开一个包含 仅对话 和 对话 + 文件 的操作菜单,则说明你使用的是 基于工具的回退。
本文介绍如何回滚更改。 有关在会话中倒退到早期点的更多概念性信息,请参阅 取消 GitHub Copilot 命令行界面 (CLI) 操作并回滚更改。
先决条件
- 回退点必须存在。 无法回退到会话中你的第一个提示之前。
- 仅适用于基于 Git 的回退: 你必须处于一个至少包含一次提交的 Git 仓库中。
- 对于基于工具的倒退: 对于上次触摸文件后 Copilot 更改的文件,可以跳过文件还原。
双击 Esc 键回退
警告
- 回退无法撤销。 一旦回滚,之后的会话历史记录将被永久删除。
- 在 基于 Git 的回退中,回滚会将整个工作区恢复到所选快照时的状态。 这会撤销在该时间点之后所做的所有更改——不仅包括由 Copilot 所做的更改,还包括任何手动编辑以及通过 shell 命令所做的更改。 删除快照后在工作区中创建的任何新文件,而不考虑其 Git 状态。
- 在使用工具进行的回退中,您可以选择是否恢复文件。 如果您选择文件还原,Copilot 之后更改的文件可能会保留原样,以避免覆盖您较新的编辑内容。
Copilot完成响应您输入的提示后:
-
确保输入区域为空。 如果输入区域中有文本,则快速连续按 Esc 两次会清除文本。
-
连续两次按 Esc 打开回退选取器。
选取器列出了当前会话的可用回退点,其中最先列出最近一个。 同时显示最近的十个点。 如果超过 10 个,请使用 ↓ 方向键向下滚动查看前面的各点。 对于每个回退点,都会显示你所输入提示词的开头部分,并标明你是在多久之前提交的。
-
选择倒退点。
- 在基于 Git 的回溯中,选择一个快照会将工作区恢复到该提示词开始时的状态。
- 在基于工具的回退中,选择回退点后,您可以选择:
-
仅对话 (历史记录重排、文件未更改),或
-
对话 + 文件(已回退历史记录,并恢复由 Copilot 更改且可还原的文件)。
-
注意
在基于 Git 的回退中,仓库会回退到 Copilot 开始处理该提示之前的状态,而不是在其处理完该提示之后的状态。
所选的提示将显示在输入区域中,以便根据需要编辑并重新提交它。
使用 /undo 斜杠命令回退
/undo斜杠命令及其别名/rewind提供了打开回退选取器的另一种方法。
两个命令产生的结果与在 空闲且输入区域中没有文本时按两次 Copilot 相同。
验证回滚
回滚后,可以使用 Git 命令来验证存储库的状态,并确认它是否符合预期。
通过键入 ! ,可以直接从 Copilot 命令行界面(CLI) 输入提示运行 shell 命令,因此无需退出 CLI 即可检查存储库状态。
| 要执行的操作 | 输入此命令 |
|---|---|
| 检查哪些文件显示为已修改、暂存或未跟踪。 | ! git status |
| 显示当前提交的 SHA 和提交消息。 | ! git log --oneline -1 |
| 查看未暂存的更改。 | ! git diff |