本文根據 Claude Code 官方文檔《Checkpointing》《Commands》《Manage sessions》整理,資料核對於 2026-11-05。配圖為本站整理的示意圖,不是介面截圖。本站(bigolab.com)不是 Anthropic 官方網站。
適用於誰
- Claude Code 把代碼改壞了,想「撤回到改之前」的人;
- 搜「claude code 代碼回退」,不確定是該用
/rewind還是 git 的人; - 回退之後文件沒變、或提示
No files were restored的人。
結論先說
- 回退入口是
/rewind,或者在輸入框為空時連按兩次Esc。官方給它的別名是/checkpoint和/undo。 - Claude Code 在你每發一條會開啟一輪對話的提示前,自動記一個檢查點(checkpoint),不需要你手動儲存。
- 選單裏有三種恢復:恢復代碼並回退對話、只回退對話、只恢復代碼。另外有兩個「摘要」選項,用來騰出上下文空間。
- 檢查點只跟蹤 Claude 用文件編輯工具做的改動。 只被 Bash 命令改過的文件、子代理改的文件、你自己在外面改的內容,都不在恢復範圍內。
- 它不能代替 git。 官方原話的意思是:檢查點用於會話級的快速恢復,永久的版本歷史和協作仍要用 git。

圖:本站根據 Claude Code 官方文檔:Checkpointing 整理的示意圖
一、檢查點是怎麼記的
官方說明:
- 每條開啟一輪對話的提示都會生成一個新的檢查點;
- 會話裏保留最近 100 個檢查點的文件快照,更早的會被清理;
- 檢查點跟對話一起儲存,所以恢復(resume)會話之後仍然可以
/rewind,恢復會話的方法見 /guides/claude-code-resume-history; - 文件快照在「保留期清理」裏刪除,預設是會話最後儲存快照後約 30 天。想保留更久,官方給的設定項是
cleanupPeriodDays。快照被刪後再回退,可能報No files were restored。
二、怎麼回退:選單裏每一項是什麼意思
輸入 /rewind,或在輸入框為空時連按兩次 Esc。如果輸入框裏有字,連按兩次 Esc 會清空輸入而不是打開選單,被清掉的文字會存進輸入歷史,回退完按 ↑ 可以找回。
選單會列出你在本次會話裏發過的提示。選定要回到的那一點後,可以選擇:
| 選單項(官方英文) | 作用 |
|---|---|
| Restore code and conversation | 代碼和對話都回到那個時間點 |
| Restore conversation | 對話回到那條消息,代碼保持現狀 |
| Restore code | 撤銷文件改動,對話保留 |
| Summarize from here | 把從這裏往後的對話壓縮成摘要,騰出上下文 |
| Summarize up to here | 把這裏之前的對話壓縮成摘要,之後的消息保留 |
| Never mind | 回到消息列表,不做任何改動 |
幾個細節:
- 兩個恢復代碼的選項,只有當所選檢查點之後確有被跟蹤的文件改動時才出現;
- 選了恢復對話,或「Summarize from here」後,所選那條提示會回到輸入框,你可以直接重發,或改幾個字再發;
- 「摘要」不改磁盤上的文件,原始消息仍留在會話記錄裏。要引導摘要的重點,可以用方向鍵選中摘要選項,在 add context (optional) 那一行輸入說明再按
Enter; - 摘要的作用類似有針對性的
/compact,上下文滿了怎麼辦見 /guides/claude-code-context-compact。
三、回退不了的幾種情況

圖:本站根據 Claude Code 官方文檔:Checkpointing 整理的示意圖
1. 只被 Bash 命令改過的文件。 官方的區分很細:Claude 在本次對話裏用文件編輯工具改過某個文件之後,/rewind 會連同之後 Bash 命令對該文件的改動一起撤銷;但一個只被 Bash 命令改過、Claude 從沒用編輯工具碰過的文件不被跟蹤,保持原樣。這類文件用 git 還原。
2. 子代理的改動。 子代理用編輯工具改文件,但 Claude Code 通常不會把這些改動記進你會話的檢查點。官方說:前台運行的、帶 context: fork 的 Skill 在你的回合裏改工作區,可以正常還原;其他子代理(包括預設後台運行的 fork Skill)只會還原 Claude 在你對話裏已經改過的文件,其他文件要用 git。
3. 外部改動。 檢查點只跟蹤本會話裏編輯過的文件。你在 Claude Code 之外手動改的,以及別的並發會話的改動,通常不記錄。
4. 軟連結和硬連結。 恢復代碼時,Claude Code 會跳過軟連結或硬連結的路徑,並提示 Restored the code, but skipped N files。官方舉的例子是 dotfile 管理工具做的連結、pnpm 硬連結的文件。想知道跳過了哪些,先用 /debug 打開調試日誌再回退,日誌寫在 ~/.claude/debug/<session-id>.txt。
5. 你在 Claude 工作時發的消息。 回合進行中發的消息,在選單裏可能標成 No code restore,因為它沒有自己的檢查點。官方的辦法是選開啟這一回合的那條提示,再選 Restore code 或 Restore code and conversation,這樣整回合 Claude 的文件改動都會撤銷。
6. 回退後退出又回來。 官方提醒:如果回退後、發出下一條提示之前就退出了,被回退的消息可能在下次回來時重新出現。要再刪掉,就再 /rewind 選同一條提示,選 Restore conversation。所以回退後先發一條提示再退出,Claude Code 才會把回退後的對話連同這條提示一起儲存。已經恢復的文件保持回退後的樣子。
四、/clear 之後還能回退嗎
可以,有條件。如果你在同一個 Claude Code 進程裏執行過 /clear,回退選單頂部會多出一條 /resume <session-id> (previous session),選它可以回到清空之前的那段對話;這條在你退出 Claude Code 或恢復另一個會話之後就沒有了。
五、想試另一條路,不想覆蓋原來的
官方在摘要一節寫明:想分叉出去試不同做法、又不動原會話,用 /branch,或命令行裏 claude --continue --fork-session。會話分支的細節見 /guides/claude-code-resume-history,並行多個會話互不干擾可以看 /guides/claude-code-worktree。
穩妥做法:git 和檢查點配合
官方明確說檢查點不是版本控制。更穩的習慣(這是本文的建議,不是官方原話):
- 開始一個較大的改動前,先讓 git 有一個乾淨的提交;
- 小範圍試錯、想馬上撤銷,用
/rewind; - 涉及 Bash 命令批量改文件、子代理改動,或回退提示跳過文件時,用
git status和git restore處理。
想少點幾次確認、又不想放得太開,可以先看 /guides/claude-code-stop-asking-permission。
常見問題
Q:快捷鍵按兩次 Esc 沒反應?
先看輸入框是否為空。有文字時兩次 Esc 是清空輸入。其他快捷鍵見 /guides/claude-code-keyboard-shortcuts。
Q:回退會不會把 git 提交也撤掉?
官方沒有說檢查點會動 git 歷史,它跟蹤的是文件編輯工具的改動,具體以官方頁面為準。
Q:重啟電腦後還能回退嗎?
官方說檢查點隨會話儲存,恢復會話後仍可用,前提是快照沒有被保留期清理。
相關教學
參考資料
- Claude Code 官方文檔:Checkpointing — https://code.claude.com/docs/en/checkpointing
- Claude Code 官方文檔:Commands — https://code.claude.com/docs/en/commands
- Claude Code 官方文檔:Manage sessions — https://code.claude.com/docs/en/sessions
0 條評論
還沒有評論,來搶沙發~