---
title: "回滚和 PR 管理"
description: "说明 Copilot CLI snapshot、双 Esc、/undo、/rewind、验证回滚和 PR 审查链路。"
verifiedAt: "2026-05-06"
---

Copilot CLI 能改文件和运行命令，就必须能回滚。GitHub 官方 rollback 页面说明：交互式会话中，每次 prompt 开始时，Copilot CLI 会创建 workspace snapshot（工作区快照）；如果结果不符合预期，可以回到某个 prompt 前的状态。

> [!IMPORTANT]
> 回滚不是补救小技巧，而是 CLI 工作流的**安全底线**。前提：仓库必须至少有一个 Git commit，且回滚是**整个工作区**回到 snapshot——不只 Copilot 的改动，你自己的手动编辑也会一起被覆盖。

> [!TIP]
> **阅读目标**：读完本章，你应该能用 snapshot、双 `Esc`、`/undo` 和 Git review 管理 Copilot CLI 改动。

## 1. Snapshot 怎么工作

官方文档说明：

- 每次输入 prompt 后，CLI 开始工作前会创建 workspace snapshot。
- 回滚会把仓库恢复到所选 prompt 开始前的状态。
- 可以双击 `Esc` 打开 rewind picker。
- 也可以用 `/undo` 或 `/rewind` slash command。
- 需要在有至少一个 commit 的 Git repository 中工作。

```mermaid
flowchart TD
    Prompt["输入 prompt"] --> Snapshot["创建 snapshot"]
    Snapshot --> Work["Copilot 改文件 / 跑命令"]
    Work --> Review{"结果是否可接受?"}
    Review -->|是| Keep["保留并测试"]
    Review -->|否| Rewind["Esc Esc / /undo"]
    Rewind --> Picker["选择 snapshot"]
    Picker --> Restore["恢复到 prompt 前状态"]
    Keep --> PR["commit / PR review"]

    style Snapshot fill:#dbeafe,stroke:#2563eb,stroke-width:2px
    style Rewind fill:#fee2e2,stroke:#dc2626,stroke-width:2px
    style PR fill:#dcfce7,stroke:#16a34a,stroke-width:2px
```

## 2. 回滚前必须知道的警告

官方 rollback 页面给出两个关键警告：

- Rewind 会恢复整个 workspace 到选中 snapshot 的状态，撤回该 snapshot 后所有改动，不只撤回 Copilot 改动，也包括你的手动编辑和 shell command 产生的改动。
- Rewind 不能撤销。回到某个 snapshot 后，该点之后的 snapshots 和 session history 会永久移除。

所以回滚前先看：

```bash
git status
git diff
```

确认没有你要保留的手动改动。

## 3. 双 Esc 回滚

当 Copilot 已经完成一个 prompt 的响应，且 input area 为空时：

1. 快速按两次 `Esc`。
2. 打开 rewind picker。
3. 选择要回到的 snapshot。
4. 仓库恢复到该 prompt 开始前。
5. 选中的 prompt 会重新出现在 input area，你可以改写后重试。

如果 input area 里有文字，双 `Esc` 可能先清空输入，不一定打开 picker。

## 4. `/undo` 和 `/rewind`

`/undo` 和 `/rewind` 是打开 rewind picker 的 slash command。它们和双 `Esc` 结果相同，适合你不想依赖快捷键时使用。

推荐流程：

1. `/undo`
2. 选 snapshot。
3. `git status`
4. `git diff`
5. 重新缩小 prompt。

## 5. 回滚验证

回滚后不能只看 CLI 提示。至少检查：

- `git status` 是否回到预期。
- 被删除或新增的文件是否符合预期。
- 测试是否需要重跑。
- 后续 prompt 是否缩小了范围。
- 如果已有 PR，是否需要关闭、更新或说明回滚。

## 6. PR 管理

Copilot CLI 可以帮助管理 PR，但 PR 仍然要按普通工程流程处理：

- CLI 可以创建或修改 PR。
- `/delegate` 会打开 draft PR。
- PR summary 不是 review。
- Reviewer 仍要看 diff、tests、workflow 和权限变化。
- 不合格分支可以关闭 PR 或人工接管。

<details>
<summary>深读：为什么 Git commit 是 rollback 前提</summary>

官方文档要求仓库至少有一个 commit，因为 CLI 用 Git operations 跟踪和恢复 workspace state。没有 Git 基线，回滚就缺少明确恢复点。

所以在新项目里使用 CLI 写入前，先创建初始 commit，比事后手动收拾安全得多。
</details>

## 本章自检

完成本章后，用这 4 个问题检查：

1. 当前仓库是否至少有一个 commit？
2. 回滚前是否确认没有需要保留的手动改动？
3. 回滚后是否用 `git status` 和 `git diff` 验证？
4. PR 是否保留了 reviewer 能理解的变更、测试和回滚记录？

通过标准：CLI 任务失败时，你能回到已知状态，而不是在脏工作区里继续叠加 prompt。

## 官方来源

- [Rolling back changes made during a GitHub Copilot CLI session](https://docs.github.com/en/copilot/how-tos/copilot-cli/use-copilot-cli/roll-back-changes) —— 官方 rollback 页面。
- [About GitHub Copilot CLI](https://docs.github.com/en/copilot/concepts/agents/copilot-cli/about-copilot-cli) —— 官方 CLI 概念页，覆盖安全和 PR 用例。
- [Delegating tasks to Copilot](https://docs.github.com/en/copilot/how-tos/copilot-cli/use-copilot-cli/delegate-tasks-to-cca) —— 官方委派任务页，覆盖 draft PR 和 agent session 链路。

## 接下来去哪

<Cards>
  <Card title="安全、治理与计费" description="继续学习 CLI 相关的组织策略、usage 和权限边界。" href="/docs/github-copilot/official/08-security-governance" />
  <Card title="实战 Playbook" description="把 CLI 放进 TDD、PR review 和团队 rollout 流程。" href="/docs/github-copilot/official/10-practical-playbooks" />
</Cards>
