Skip to content
FunCoding

Search

Search docs, Skills and MCP

取消操作与回滚

区分 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 打开选择器。

  1. 找到目标提示,列表从最近的回滚点开始,超过十项时用方向键滚动。
  2. 选择后按 Enter。
  3. 决定只恢复对话,还是恢复对话和文件。
  4. 如果恢复文件,核对逐文件预览再确认。

回滚点对应的是 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

这些检查分别帮助确认工作区状态、当前提交和未暂存差异。它们用于验证结果,不是回滚本身的实现步骤。