介绍
在交互式 Copilot CLI 会话中工作时,可以停止正在进行的工作或撤消已完成的工作:
- 取消操作,使用 Esc 或 +C。 这些键的行为方式不同,具体取决于 Copilot 是否正常工作、提示是否已排队,或是否打开了对话框。
- 按 Esc 两次可Copilot,前提是当
/undo空闲时;或者使用/rewind斜杠命令或其 **** 别名。
回滚时,可以选择是仅回退对话,还是也还原 Copilot 更改的文件。
Rewind 在任何目录中工作,包括不是 Git 存储库的文件夹。 它仅还原 Copilot 更改的文件。
取消操作
需要逐步、有针对性的控制时使用 Esc。 当Copilot工作时,第一次按会显示提醒,第二次按会中断操作。 按一次也会关闭打开的对话框或拒绝挂起的权限请求。
如果想要取消,而无需确认第二次按 Esc,请使用 +C。 按一次 Ctrl+C 会立即取消当前操作并清除所有排队等待的提示。 正在进行的任何文件写入都将完成(文件未在写入中损坏),但将放弃所有剩余的计划更改。 在输入区域为空的情况下,在两秒内再次按下 Ctrl+C 键,将完全退出会话。
按 Esc 在不同情况下执行的操作
按 Esc 的效果取决于会话的当前状态。
| 当前状态 | 按 Esc 执行的操作 |
|---|---|
| Copilot 在没有排队提示的情况下处于活动状态。 | 显示“再次按 Esc 可取消”提醒。 在半秒内再次按 Esc 以取消操作。 |
| Copilot 处于活动状态,并且提示词已排队。 | 显示取消提醒。 再次按 Esc 会中断当前操作。 在本地会话中,排队的提示词将作为下一轮进行处理。 在远程后端支持的或附加的会话中,操作已完全取消,排队提示不会作为后续轮次运行。 |
| 权限对话框处于打开状态。 | 拒绝挂起的请求,而无需再次按下。 |
| 对话框、覆盖层或选择器已打开。 | 关闭对话框、覆盖或选取器。 |
| Copilot 处于空闲状态。 | 显示一个提醒,快速再次按 Esc 将打开回退选取器。 |
仅当 处于空闲状态且输入区域为空时,快速连按两次 Copilot 才会打开回退选取器。 在其他情况下,双 Esc 按以下顺序执行第一个适用操作:
- 取消正在运行的 shell 命令。
- 停止当前响应。
- 停止后台代理程序。
- 清除输入区域中的文本。
双击 Esc 键回退
警告
- 回退无法撤销。 一旦回滚,之后的会话历史记录将被永久删除。
- 如果选择还原文件, Copilot 则仅还原它更改的文件,并跳过其当前内容不再与上次写入的内容匹配的任何文件,因此不会覆盖你自己的以后的编辑。
先决条件
- 回退点必须存在。 无法回退到会话中你的第一个提示之前。
- 文件还原仅适用于跟踪文件更改的会话。 如果恢复在启用文件更改跟踪之前启动的会话,则仅提供对话回退。 启动一个新会话,以便能够还原文件更改。
- Rewind 不适用于由远程后端支持的会话,或者会话中仍有未完成的工作。
Copilot完成响应您输入的提示后:
-
确保输入区域为空,并且没有正在进行的工作。 如果输入区域中有文本,则快速连续按 Esc 两次会清除文本,而不是打开选取器。
-
连续两次按 Esc 打开回退选取器。
选取器列出了当前会话的可用回退点,其中最先列出最近一个。 同时显示最近的十个点。 如果超过 10 个,请使用 ↑ 和 ↓ 方向键滚动查看。 对于每个回退点,将显示你输入的提示开头以及提交至今已过多久。 对于更改了文件的轮次,也会显示该轮次添加和删除的行数。
-
选择回溯点,然后按 Enter。
选择回退点将打开一个操作菜单,可在其中选择 “仅对话” 或 “对话 + 文件”。 当该轮次和任何后续轮次都未更改任何可还原的文件时,将无法作为回退点使用。 在还原之前,Copilot 按文件显示更改预览,以便可以确认。
注意
回退是相对于在Copilot开始处理提示之前的状态应用的,而不是相对于处理完提示后立即的状态。
所选的提示将显示在输入区域中,以便根据需要编辑并重新提交它。
使用 /undo 斜杠命令回退
/undo斜杠命令及其别名/rewind提供了打开回退选取器的另一种方法。
两个命令产生的结果与在 空闲且输入区域中没有文本时按两次 Copilot 相同。
回滚时会发生什么情况
如果选择倒退对话和还原文件:
- Copilot 将其更改过的文件还原到所选提示之前的状态。 它会跳过你之后编辑过的文件。
- 对话将重新移动到所选点。 该点后的消息和工具调用将被删除。
- 已删除已丢弃的轮次的捕获文件更改。 以前的回退点仍然可用。
- Copilot 报告还原的文件数,并标识任何跳过的文件。
- 所选提示放置在输入区域中,以便可以编辑并重新提交它。
如果选择仅回退对话,则文件保持不变。 将删除后续会话历史记录,并将所选提示还原到输入区域。
无法还原的更改
在以下情况下,文件还原会被跳过或不可用:
- 超过 10 MB 的文件:不会捕获对大于 10 MB 的单个文件的更改。
- 超过 500 个已更改的文件:如果单个轮次更改超过 500 个文件,则不会捕获该轮次的文件更改。 其他轮次不受影响。
- 您自行更改的文件:如果文件的当前内容不再与 Copilot 上次写入的内容匹配,则该文件保持不变。
- 没有文件跟踪的会话:如果在启用文件更改跟踪之前启动会话,则只有对话回退可用。
- 由远程后端支持的或繁忙的会话:Rewind 不适用于由远程后端支持的会话,或者工作仍在进行中。
验证回滚
回滚后,可以使用 Git 命令来验证存储库的状态,并确认它是否符合预期。
通过键入 ! ,可以直接从 Copilot CLI 输入提示运行 shell 命令,因此无需退出 CLI 即可检查存储库状态。
| 要执行的操作 | 输入此命令 |
|---|---|
| 检查哪些文件显示为已修改、暂存或未跟踪。 | ! git status |
| 显示当前提交的 SHA 和提交消息。 | ! git log --oneline -1 |
| 查看未暂存的更改。 | ! git diff |