---
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="/zh-Hant/docs/github-copilot/official/08-security-governance" />
  <Card title="實戰 Playbook" description="把 CLI 放進 TDD、PR review 和團隊 rollout 流程。" href="/zh-Hant/docs/github-copilot/official/10-practical-playbooks" />
</Cards>
