取消操作与回滚
区分 Esc、Ctrl+C、对话撤回和文件恢复,核对回滚的范围与限制。
This page has not been translated into English yet. The original Chinese version is shown below.
停止当前操作和恢复已经发生的修改是两个步骤。取消会阻止后续工作,但不会自动撤销先前写入的文件;回滚需要选择过去的提示位置,并确认是否同时恢复文件。
正在运行时如何停止
| 状态或按键 | 行为 |
|---|---|
活跃任务按一次 Esc | 显示再次按键取消的提示 |
半秒内再按 Esc | 中断当前操作 |
权限对话框按一次 Esc | 拒绝当前请求,无需第二次 |
普通弹窗或选择器按 Esc | 关闭当前界面 |
Ctrl+C | 立即取消活动操作并清空排队提示 |
本地会话通过双 Esc 中断后,排队提示可作为下一轮处理;远程支持或附加的会话会完全取消,不把队列转成后续轮次。想停止当前任务和队列一起处理时,使用 Ctrl+C。
已经在执行的文件写入会完成,剩余计划修改被放弃。输入为空时,两秒内再次按 Ctrl+C 会退出会话。双 Esc 在不同状态下还可能取消 Shell、停止回复、停止后台智能体或清空输入,并不总是打开回滚界面。
选择回滚点
等待 Copilot 空闲并清空输入,再快速按两次 Esc;也可使用 /undo 或别名 /rewind 打开选择器。
- 找到目标提示,列表从最近的回滚点开始,超过十项时用方向键滚动。
- 选择后按
Enter。 - 决定只恢复对话,还是恢复对话和文件。
- 如果恢复文件,核对逐文件预览再确认。
回滚点对应的是 Copilot 开始处理该提示之前 的状态,不是处理结束后的状态。目标提示会回填输入框,可修改后重发。回滚会永久移除该点之后的对话历史,不能再撤销这次回滚。
两种恢复范围
Conversation only 只截断会话历史,文件保持当前内容。Conversation + files 同时恢复 CLI 捕获的文件修改;如果文件当前内容已经不等于 Copilot 最后写入的版本,例如你后来手工编辑过,会跳过该文件。
官方操作页和概念页的具体步骤均描述为只恢复 Copilot 修改并跟踪的文件,支持非 Git 目录。但概念页仍残留一条“整个工作区包括手工修改都会恢复”的冲突警告。不要据此推断任意版本的全盘恢复保证;以当前 CLI 的逐文件预览、跳过提示和实际结果为准。
文件恢复的限制
- 单个文件超过 10 MB 时,不捕获用于恢复的内容。
- 单轮修改超过 500 个文件 时,该轮不捕获文件修改;其他轮次不受这一限制影响。
- 你在 Copilot 写入后又修改的文件会被跳过。
- 从尚未启用文件跟踪时期恢复的旧会话,只能撤回对话。
- 远程支持的会话,以及仍有工作在运行的会话,不提供回滚。
若目标轮次及之后没有可恢复文件,Conversation + files 不可选。文件回滚也不能当作撤销外部系统操作的通用机制。
核对结果
回滚完成后查看恢复数量与跳过记录。在 Git 仓库可直接从 CLI 执行:
! git status
! git log --oneline -1
! git diff这些检查分别帮助确认工作区状态、当前提交和未暂存差异。它们用于验证结果,不是回滚本身的实现步骤。