Claude Code 代碼改壞了怎麼回退:/rewind 或連按兩次 Esc,三種恢復方式,哪些改動回退不了

Claude Code 改壞了代碼,可以輸入 /rewind(別名 /undo),或在輸入框為空時連按兩次 Esc,選擇只恢復代碼、只回退對話或兩者一起。本文講選單裏每一項的含義,以及 Bash 命令、子代理、外部改動為什麼回退不了。

NNathaniel bigo··原創首發·AI 輔助撰寫
10 分鐘讀完
資料核對於 2026-11-05 · 依據官方文檔與公開資料整理 Pro 帳號
本文根據 Claude Code 官方文檔《Checkpointing》《Commands》《Manage sessions》整理,資料核對於 2026-11-05。配圖為本站整理的示意圖,不是介面截圖。本站(bigolab.com)不是 Anthropic 官方網站。

適用於誰

  • Claude Code 把代碼改壞了,想「撤回到改之前」的人;
  • 搜「claude code 代碼回退」,不確定是該用 /rewind 還是 git 的人;
  • 回退之後文件沒變、或提示 No files were restored 的人。

結論先說

  1. 回退入口是 /rewind,或者在輸入框為空時連按兩次 Esc。官方給它的別名是 /checkpoint 和 /undo。
  2. Claude Code 在你每發一條會開啟一輪對話的提示前,自動記一個檢查點(checkpoint),不需要你手動儲存。
  3. 選單裏有三種恢復:恢復代碼並回退對話、只回退對話、只恢復代碼。另外有兩個「摘要」選項,用來騰出上下文空間。
  4. 檢查點只跟蹤 Claude 用文件編輯工具做的改動。 只被 Bash 命令改過的文件、子代理改的文件、你自己在外面改的內容,都不在恢復範圍內。
  5. 它不能代替 git。 官方原話的意思是:檢查點用於會話級的快速恢復,永久的版本歷史和協作仍要用 git。

Claude Code 回退代碼的四個步驟:打開選單、選提示、選動作、重發

圖:本站根據 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

Nathaniel 的更多內容

  1. 01

    Claude Code 支持語音輸入嗎:/voice 開啟,按住空格說話,要 claude.ai 帳號和本地麥克風,支持的聽寫語言有限

    Claude Code 命令行版支持語音輸入(voice dictation):輸入 /voice 開啟,按住空格說話,轉寫文字直接進輸入框。但必須用 claude.ai 帳號登入、有本地麥克風,SSH 和雲端會話不能用;官方的聽寫語言清單裏沒有中文。

    Claude0
  2. 02

    Claude Code 任務完成提醒、提示音、Windows 通知怎麼設:終端響鈴、Notification hook 和 Stop hook 的區別

    Claude Code 做完任務想收到提醒,官方有三條路:在設定裏把 preferredNotifChannel 設為 terminal_bell 讓終端響鈴;用 Notification hook 在它等你輸入或批准時彈窗;用 Stop hook 在每次回覆完畢時執行命令。本文含 Windows 寫法和排查。

    Claude0
  3. 03

    Claude Code 狀態欄怎麼配置:/statusline 一句話生成,顯示模型、上下文佔用和 5 小時 / 7 天用量

    Claude Code 底部狀態欄可以自己定製:用 /statusline 說一句話讓它生成腳本,或在 settings.json 的 statusLine 裏指向自己的腳本。本文講怎麼配、腳本能讀到哪些字段(模型、上下文、花費、訂閱用量)、Windows 寫法和不顯示時的排查。

    Claude0
  4. 04

    Claude Code 提示未登入、怎麼退出登入、切換帳號:/login、/logout、/status 和 CLAUDE_CONFIG_DIR

    Claude Code 提示 Not logged in 時運行 /login;退出登入用 /logout;想同時用兩個帳號,官方的做法是給每個帳號單獨設 CLAUDE_CONFIG_DIR。本文講幾個登入命令、登入憑據存哪、/status 怎麼看當前帳號,以及 API 密鑰覆蓋訂閱的坑。

    Claude0
  5. 05

    Claude Code 安裝卡住、很慢、失敗怎麼辦:先測下載伺服器,再按報錯對照(下載中斷、Killed、PATH、PowerShell)

    Claude Code 安裝卡住或失敗,官方的排查順序是:先測 downloads.claude.ai 能不能連上,再按報錯分類處理。本文整理下載中斷、Linux 內存不足 Killed、Docker 裏卡住、Windows 命令用錯 shell 等情況的官方對策。

    Claude0
  6. 06

    Claude Code 怎麼連接遠程伺服器(SSH):桌面版加 SSH 環境,或登入伺服器後在終端裏直接用

    Claude Code 連遠程伺服器有兩種官方做法:桌面版 Code 標籤頁裏添加 SSH 環境,桌面版會自動在伺服器上裝好 Claude Code;或者自己 SSH 登入伺服器,在終端裏安裝並登入。本文講兩種做法的步驟、伺服器要求和常見報錯。

    Claude0

同產品的其他教學

  1. 01

    Claude Code 歷史記錄在哪、文件夾在哪:~/.claude 裏每個文件是什麼,哪些 30 天后會被清掉,哪些不能刪

    Claude Code 的會話記錄、提示歷史、配置和登入憑據都在用戶目錄下的 .claude 文件夾(Windows 是 %USERPROFILE%\.claude)。本文按官方文檔列出各文件的用途、預設保留期、哪些不能刪,以及怎麼清理、怎麼換位置。

    Claude0
  2. 02

    Claude Code 怎麼導出會話、導出上下文:/export、/copy 和 .jsonl 會話記錄的區別

    Claude Code 導出對話用 /export(純文本,可直接寫入文件),只要最後一條回答用 /copy。本文講兩個命令的區別、會話記錄 .jsonl 在哪、腳本怎麼拿結構化結果,以及「導出上下文」換新會話時官方給的做法。

    Claude0
  3. 03

    別讓 Claude Code 一直問你能不能執行:選 don't ask again、寫 allow 規則、切 acceptEdits 或 auto 模式

    Claude Code 總彈「能不能執行」,可以分三層解決:彈窗裏選 don't ask again 存規則,用 allow 規則放行常用命令,或按 Shift+Tab 切到 acceptEdits、auto 模式。本文按場景講,並說明哪些提示官方就是關不掉。

    Claude0
  4. 04

    Claude Code 官網下載在哪、怎麼安裝:原生安裝、npm、Homebrew、WinGet 怎麼選,Windows 要不要裝 Git

    搜「Claude Code 官網下載」「為什麼要裝 Git」「為什麼不推薦 npm」,官方文檔的答案是:安裝說明在 code.claude.com,原生安裝標為推薦,npm 要 Node.js 22,Windows 的 Git 是可選的。本文按官方文檔逐項說明。

    Claude0
  5. 05

    Claude Code 無法粘貼、無法讀取圖片怎麼辦:Ctrl+V 和 Alt+V 的區別,拖放和路徑三种放圖方法

    Claude Code 裏粘貼不了截圖、讀不到圖片?官方文檔給了三種把圖放進對話的方法:拖放進窗口、Ctrl+V 粘貼(Windows 和 WSL 用 Alt+V)、直接寫圖片路徑。官方沒有為「粘貼失敗」單列排查,本文把官方寫明的做法和通用排查分開講。

    Claude0
  6. 06

    Claude 報錯 529 overloaded_error 怎麼辦:API 暫時過載是什麼意思,和 429、500、504 怎麼區分

    Claude API 返回 529 overloaded_error,官方的解釋是 API 暫時過載,全體用戶高峰時都可能遇到,不是你的 Key 或餘額出了問題。本文按官方錯誤頁(2026-10 查詢)講清它和 429、500、504 的區別、SDK 怎麼自動重試、流式請求中途報錯怎麼處理。

    Claude0

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~