Skip to main content

回退 GitHub Copilot 命令行界面 (CLI) 会话期间所做的更改

将 Copilot 命令行界面(CLI) 会话倒退到以前的提示,以撤消会话历史记录中的更改,并选择性地还原文件。

介绍

在交互式 Copilot 命令行界面(CLI) 会话中工作时, Copilot 可以更改文件、运行 shell 命令和修改存储库。 如果结果不是你所期望的,可以返回到会话中的之前的某个点以撤销这些更改。

可以通过按 Esc 两次,或使用 /undo 斜杠命令(或其别名 /rewind)触发回退。

Copilot 命令行界面(CLI) 支持两种回退方式:

  • 基于 Git 的倒退:回滚到在提示开始时拍摄的工作区快照。
  • 基于工具的倒退:仅允许你回退对话历史记录,或回退对话历史记录并还原已更改的文件 Copilot 。

注意

基于工具的回退目前是一项实验性功能,仅当已使用 /experimental on 斜杠命令或 --experimental 命令行选项时才可用。

Copilot 命令行界面(CLI) 根据环境自动选择以下回退行为之一,以提供尽可能最佳的回退体验。

若要判断当前启用的是哪种回退行为:

  • 如果选取器立即显示快照,并且选择其中一个会执行回滚,说明你使用的是 基于 Git 的回溯
  • 如果选择回退点时会打开一个包含 仅对话对话 + 文件 的操作菜单,则说明你使用的是 基于工具的回退

本文介绍如何回滚更改。 有关在会话中倒退到早期点的更多概念性信息,请参阅 取消 GitHub Copilot 命令行界面 (CLI) 操作并回滚更改

先决条件

  • 回退点必须存在。 无法回退到会话中你的第一个提示之前。
  • 仅适用于基于 Git 的回退: 你必须处于一个至少包含一次提交的 Git 仓库中。
  • 对于基于工具的倒退: 对于上次触摸文件后 Copilot 更改的文件,可以跳过文件还原。

双击 Esc 键回退

警告

  • 回退无法撤销。 一旦回滚,之后的会话历史记录将被永久删除。
  • 基于 Git 的回退中,回滚会将整个工作区恢复到所选快照时的状态。 这会撤销在该时间点之后所做的所有更改——不仅包括由 Copilot 所做的更改,还包括任何手动编辑以及通过 shell 命令所做的更改。 删除快照后在工作区中创建的任何新文件,而不考虑其 Git 状态。
  • 使用工具进行的回退中,您可以选择是否恢复文件。 如果您选择文件还原,Copilot 之后更改的文件可能会保留原样,以避免覆盖您较新的编辑内容。

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

  1. 确保输入区域为空。 如果输入区域中有文本,则快速连续按 Esc 两次会清除文本。

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

    选取器列出了当前会话的可用回退点,其中最先列出最近一个。 同时显示最近的十个点。 如果超过 10 个,请使用 方向键向下滚动查看前面的各点。 对于每个回退点,都会显示你所输入提示词的开头部分,并标明你是在多久之前提交的。

  3. 选择倒退点。

    • 在基于 Git 的回溯中,选择一个快照会将工作区恢复到该提示词开始时的状态。
    • 在基于工具的回退中,选择回退点后,您可以选择:
      • 仅对话 (历史记录重排、文件未更改),或

      • 对话 + 文件(已回退历史记录,并恢复由 Copilot 更改且可还原的文件)。

    注意

    在基于 Git 的回退中,仓库会回退到 Copilot 开始处理该提示之前的状态,而不是在其处理完该提示之后的状态。

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

使用 /undo 斜杠命令回退

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

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

验证回滚

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

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

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

延伸阅读