Skip to main content
Skip to content

在 GitHub Copilot CLI 中取消操作和回滚更改

停止正在进行的 Copilot CLI 操作,或倒退会话以撤消会话历史记录中的更改,并选择性地还原文件。

介绍

在交互式 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 按以下顺序执行第一个适用操作:

  1. 取消正在运行的 shell 命令。
  2. 停止当前响应。
  3. 停止后台代理程序。
  4. 清除输入区域中的文本。

双击 Esc 键回退

警告

  • 回退无法撤销。 一旦回滚,之后的会话历史记录将被永久删除。
  • 如果选择还原文件, Copilot 则仅还原它更改的文件,并跳过其当前内容不再与上次写入的内容匹配的任何文件,因此不会覆盖你自己的以后的编辑。

先决条件

  • 回退点必须存在。 无法回退到会话中你的第一个提示之前。
  • 文件还原仅适用于跟踪文件更改的会话。 如果恢复在启用文件更改跟踪之前启动的会话,则仅提供对话回退。 启动一个新会话,以便能够还原文件更改。
  • Rewind 不适用于由远程后端支持的会话,或者会话中仍有未完成的工作。

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

  1. 确保输入区域为空,并且没有正在进行的工作。 如果输入区域中有文本,则快速连续按 Esc 两次会清除文本,而不是打开选取器。

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

    选取器列出了当前会话的可用回退点,其中最先列出最近一个。 同时显示最近的十个点。 如果超过 10 个,请使用 ↑ 和 ↓ 方向键滚动查看。 对于每个回退点,将显示你输入的提示开头以及提交至今已过多久。 对于更改了文件的轮次,也会显示该轮次添加和删除的行数。

  3. 选择回溯点,然后按 Enter。

    选择回退点将打开一个操作菜单,可在其中选择 “仅对话” 或 “对话 + 文件”。 当该轮次和任何后续轮次都未更改任何可还原的文件时,将无法作为回退点使用。 在还原之前,Copilot 按文件显示更改预览,以便可以确认。

    注意

    回退是相对于在Copilot开始处理提示之前的状态应用的,而不是相对于处理完提示后立即的状态。

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

使用 /undo 斜杠命令回退

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

两个命令产生的结果与在 空闲且输入区域中没有文本时按两次 Copilot 相同。

回滚时会发生什么情况

如果选择倒退对话和还原文件:

  1. Copilot 将其更改过的文件还原到所选提示之前的状态。 它会跳过你之后编辑过的文件。
  2. 对话将重新移动到所选点。 该点后的消息和工具调用将被删除。
  3. 已删除已丢弃的轮次的捕获文件更改。 以前的回退点仍然可用。
  4. Copilot 报告还原的文件数,并标识任何跳过的文件。
  5. 所选提示放置在输入区域中,以便可以编辑并重新提交它。

如果选择仅回退对话,则文件保持不变。 将删除后续会话历史记录,并将所选提示还原到输入区域。

无法还原的更改

在以下情况下,文件还原会被跳过或不可用:

  • 超过 10 MB 的文件:不会捕获对大于 10 MB 的单个文件的更改。
  • 超过 500 个已更改的文件:如果单个轮次更改超过 500 个文件,则不会捕获该轮次的文件更改。 其他轮次不受影响。
  • 您自行更改的文件:如果文件的当前内容不再与 Copilot 上次写入的内容匹配,则该文件保持不变。
  • 没有文件跟踪的会话:如果在启用文件更改跟踪之前启动会话,则只有对话回退可用。
  • 由远程后端支持的或繁忙的会话:Rewind 不适用于由远程后端支持的会话,或者工作仍在进行中。

验证回滚

回滚后,可以使用 Git 命令来验证存储库的状态,并确认它是否符合预期。

通过键入 ! ,可以直接从 Copilot CLI 输入提示运行 shell 命令,因此无需退出 CLI 即可检查存储库状态。

要执行的操作输入此命令
检查哪些文件显示为已修改、暂存或未跟踪。! git status
显示当前提交的 SHA 和提交消息。! git log --oneline -1
查看未暂存的更改。! git diff

延伸阅读