回滚和 PR 管理
说明 Copilot CLI snapshot、双 Esc、/undo、/rewind、验证回滚和 PR 审查链路。
Copilot CLI 能改文件和运行命令,就必须能回滚。GitHub 官方 rollback 页面说明:交互式会话中,每次 prompt 开始时,Copilot CLI 会创建 workspace snapshot(工作区快照);如果结果不符合预期,可以回到某个 prompt 前的状态。
回滚不是补救小技巧,而是 CLI 工作流的安全底线。前提:仓库必须至少有一个 Git commit,且回滚是整个工作区回到 snapshot——不只 Copilot 的改动,你自己的手动编辑也会一起被覆盖。
阅读目标:读完本章,你应该能用 snapshot、双 Esc、/undo 和 Git review 管理 Copilot CLI 改动。
1. Snapshot 怎么工作
官方文档说明:
- 每次输入 prompt 后,CLI 开始工作前会创建 workspace snapshot。
- 回滚会把仓库恢复到所选 prompt 开始前的状态。
- 可以双击
Esc打开 rewind picker。 - 也可以用
/undo或/rewindslash command。 - 需要在有至少一个 commit 的 Git repository 中工作。
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 会永久移除。
所以回滚前先看:
git status
git diff确认没有你要保留的手动改动。
3. 双 Esc 回滚
当 Copilot 已经完成一个 prompt 的响应,且 input area 为空时:
- 快速按两次
Esc。 - 打开 rewind picker。
- 选择要回到的 snapshot。
- 仓库恢复到该 prompt 开始前。
- 选中的 prompt 会重新出现在 input area,你可以改写后重试。
如果 input area 里有文字,双 Esc 可能先清空输入,不一定打开 picker。
4. /undo 和 /rewind
/undo 和 /rewind 是打开 rewind picker 的 slash command。它们和双 Esc 结果相同,适合你不想依赖快捷键时使用。
推荐流程:
/undo- 选 snapshot。
git statusgit diff- 重新缩小 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 或人工接管。
深读:为什么 Git commit 是 rollback 前提
官方文档要求仓库至少有一个 commit,因为 CLI 用 Git operations 跟踪和恢复 workspace state。没有 Git 基线,回滚就缺少明确恢复点。
所以在新项目里使用 CLI 写入前,先创建初始 commit,比事后手动收拾安全得多。
本章自检
完成本章后,用这 4 个问题检查:
- 当前仓库是否至少有一个 commit?
- 回滚前是否确认没有需要保留的手动改动?
- 回滚后是否用
git status和git diff验证? - PR 是否保留了 reviewer 能理解的变更、测试和回滚记录?
通过标准:CLI 任务失败时,你能回到已知状态,而不是在脏工作区里继续叠加 prompt。
官方来源
- Rolling back changes made during a GitHub Copilot CLI session —— 官方 rollback 页面。
- About GitHub Copilot CLI —— 官方 CLI 概念页,覆盖安全和 PR 用例。
- Delegating tasks to Copilot —— 官方委派任务页,覆盖 draft PR 和 agent session 链路。