{"meta":{"title":"取消 GitHub Copilot CLI 操作并回滚更改","intro":"了解取消活动 Copilot 操作的不同方法，以及如果结果不符合预期如何回滚会话期间所做的更改。","product":"GitHub Copilot","breadcrumbs":[{"href":"/zh/enterprise-cloud@latest/copilot","title":"GitHub Copilot"},{"href":"/zh/enterprise-cloud@latest/copilot/concepts","title":"概念"},{"href":"/zh/enterprise-cloud@latest/copilot/concepts/agents","title":"智能体"},{"href":"/zh/enterprise-cloud@latest/copilot/concepts/agents/copilot-cli","title":"Copilot CLI"},{"href":"/zh/enterprise-cloud@latest/copilot/concepts/agents/copilot-cli/cancel-and-roll-back","title":"取消和回滚"}],"documentType":"article"},"body":"# 取消 GitHub Copilot CLI 操作并回滚更改\n\n了解取消活动 Copilot 操作的不同方法，以及如果结果不符合预期如何回滚会话期间所做的更改。\n\n## Introduction\n\n在交互式 Copilot CLI 会话中工作时，可以按 <kbd>Esc</kbd> 或 <kbd>Ctrl</kbd>+<kbd>C</kbd> 来控制 Copilot 正在执行的操作。 两个键压都可以取消操作，但它们的工作方式略有不同：\n\n* <kbd>Ctrl</kbd>+<kbd>C</kbd> 会立即生效，无需再次按下进行确认——首先移除所有已排队的提示（每按一次移除一个），然后取消当前操作。\n* 单次按下 <kbd>Esc</kbd> 键可让你进行更渐进的分阶段控制。 当 Copilot 正在运行时，按一次 <kbd>Esc</kbd> 不会立即取消，而是会先显示提醒；再次按下则会执行下一步操作：移除最近加入队列的提示，如果队列已空，则取消该操作。\n\n如果 Copilot 已进行更改并想要撤消这些更改，则可以回滚到会话中的上一点。 按 Copilot 原样跟踪 Copilot CLI 文件更改，因为它会响应每个提示。 这样，便可以在空闲时Copilot按 <kbd>Esc</kbd> 两次，输入区域为空，从而回退到早期点。 回退时，可以选择是仅回退对话，还是还原已更改的文件 Copilot 。\n\n## 按 Esc 在不同情况下执行的操作\n\n按 <kbd>Esc</kbd> 一次会执行不同的操作，具体取决于会话的当前状态：\n\n| 当前状态                  | 按 <kbd>Esc</kbd> 执行的操作                                                       |\n| --------------------- | ---------------------------------------------------------------------------- |\n| Copilot 处于活动状态，无排队提示。 | 显示“再次 Esc 以取消”提醒。 仅当在半秒内再次按 <kbd>Esc</kbd> 时，才会取消正在运行的操作。                    |\n| Copilot 处于活动状态，有排队提示。 | 显示“再次 Esc 以取消”提醒。 再次按 <kbd>Esc</kbd> 会删除最近排队的提示。                             |\n| 权限对话框处于打开状态。          | 按一次 <kbd>Esc</kbd> 即可拒绝当前待处理的请求（无需再次按下）。                                     |\n| 对话框、覆盖层或选择器已打开。       | 关闭对话框、覆盖或选取器。                                                                |\n| Copilot 处于空闲状态。       | 显示一个简短的提醒，即再次按 <kbd>Esc</kbd> 会快速打开回退选取器。 请参阅 [回滚更改](#rolling-back-changes)。 |\n\n当处于空闲状态时Copilot，按 <kbd>Esc</kbd> 两次可让你回滚到会话中的早期点。 如果操作正在进行，则双 <kbd>Esc</kbd> 按优先级顺序执行以下操作之一：\n\n* 取消正在运行的 shell 命令。\n* 停止当前响应。\n* 停止后台代理。\n* 清除输入区域中的文本。\n* 退出 shell 模式。\n\n如果未应用这些选项，则会显示回退选取器。\n\n## 何时使用 Esc 而不是 Ctrl+C\n\n取消操作的这两种方法的主要区别在于 <kbd>Esc</kbd> 旨在逐步、有针对性的干预，而 <kbd>Ctrl</kbd>+<kbd>C</kbd> 是一个硬停止。\n\n在希望与 <kbd></kbd> 交互而不一定结束当前操作时，请使用 Copilot。 例如，如果出现权限对话框并想要拒绝此请求，按 <kbd>Esc</kbd> 键将关闭对话框，并继续 Copilot 工作，只是不会使用你拒绝的工具。 同样，如果已将后续提示排入队列，并且想要取消它们，而不会中断正在进行的工作，请按 <kbd>Esc</kbd> 会删除最近排队的提示（重复删除早期提示），而当前操作会继续运行。\n\n如果想要取消，而无需确认第二次按 <kbd>Esc</kbd>，请使用 +<kbd></kbd><kbd>C</kbd>。 如果没有提示正在队列中，按一次 <kbd>Ctrl</kbd>+<kbd>C</kbd> 会立即取消当前操作。 如果有排队中的提示，则每按一次 <kbd>Ctrl</kbd>+<kbd>C</kbd>，都会移除最近加入队列的那个提示，每次只移除一个；只有在队列为空时，才会取消当前操作。 正在进行的任何文件写入都将完成（文件未在写入中损坏），但将放弃所有剩余的计划更改。 在输入区域为空的情况下，在两秒内再次按下 <kbd>Ctrl</kbd>+<kbd>C</kbd> 键，将完全退出会话。\n\n作为经验法则，当您想要有选择地进行干预时，请使用 <kbd>Esc</kbd>；当您想要停止并重新开始时，请使用 <kbd>Ctrl</kbd>+<kbd>C</kbd>。\n\n## 回滚更改\n\n当 Copilot 处于非活动状态且输入区域中没有文本时，可以按 <kbd>Esc</kbd> 两次以显示当前会话中可回滚到的点列表。 每个点对应于提交的提示，回退会将会话返回到该会话在开始处理该提示之前 Copilot 立即处于的状态。\n\n选择倒退点后，决定是否：\n\n* **仅回退对话**，使文件保持不变。\n* **倒退对话和还原文件**，这会还原文件 Copilot 更改，同时保留自己的以后编辑。\n\n因为它仅还原更改的文件 Copilot ，而不是整个工作区，因此回退可以在任何目录中工作，包括不是 Git 存储库的文件夹。\n\n有关如何使用双击 <kbd>Esc</kbd> 键回滚会话期间所做更改的完整详细信息，请参阅 [回退 GitHub Copilot CLI 会话期间所做的更改](/zh/enterprise-cloud@latest/copilot/how-tos/copilot-cli/use-copilot-cli/roll-back-changes)。\n\n> \\[!WARNING]\n> 倒退会将整个工作区还原到所选快照中的状态。 这将还原在该点之后所做的所有更改——不仅包括由Copilot所做的更改，还包括任何手动编辑以及由 shell 命令导致的更改。 删除快照后在工作区中创建的任何新文件，而不考虑其 Git 状态。\n\n### 回滚时会发生什么情况\n\n回滚时发生的操作取决于所选选项。\n\n如果选择倒退对话 **和** 还原文件：\n\n1. **文件已还原。** 更改的文件 Copilot 将还原到所选提示之前的状态。 当前内容不再与上次写入的内容 Copilot 相匹配的文件（例如，因为你自己编辑了它们），因此不会覆盖以后的编辑。\n2. **会话历史记录将被截断。** 对话将重新移动到所选点。 从会话中删除在该点之后发生的所有消息和工具调用。\n3. **已删除过时的快照。** 已清除已放弃轮次的捕获文件更改。 早期点仍可用于未来的倒退。\n4. **回滚已确认。** 回滚后， Copilot 显示一条消息，指示已还原的文件数，并记录跳过的任何文件。\n5. **你的提示已恢复。** 与所选点关联的提示放置在输入区域中，以便可以编辑并重新提交它。\n\n如果选择仅回退对话，则文件保持不变：会话历史记录被截断（步骤 2），提示将还原到输入区域（步骤 5）。\n\n### 无法回滚的更改\n\n在以下情况下，将跳过文件还原或不可用：\n\n* **文件超过 10 MB。** 捕获期间会跳过大于 10 MB 的单个文件，因此在回滚期间不会还原对这些文件的更改。\n* **超过 500 个已更改的文件。** 如果在单个轮次期间更改了 500 多个文件，则不会捕获该轮次的文件更改，因此无法还原文件。 其他轮次不受影响。\n* **你自己更改的文件。** 当前内容不再与上次写入的内容匹配 Copilot 的文件保持不变，而不是被覆盖。\n* **没有文件跟踪的会话。** 如果在启用文件更改跟踪之前恢复启动的会话，则只有对话回退可用。 启动一个新会话，以便能够还原文件更改。\n* **远程支持的或繁忙的会话。** Rewind 不适用于远程支持的会话，或者会话仍在进行中。\n\n## 延伸阅读\n\n* [GitHub Copilot CLI 命令参考](/zh/enterprise-cloud@latest/copilot/reference/copilot-cli-reference/cli-command-reference)"}