有一件事很容易誤會:Claude Code 有自動存檔,所以我不用 commit 了吧?
它確實有。每次你按送出之前,它會先存一份當下的檔案快照,事後打 /rewind,或在輸入框空白時連按兩下 Esc,就能開啟還原選單。官方文件列出來的選項有五個:還原程式碼和對話、只還原對話、只還原程式碼,以及兩種摘要——把這個點之後的壓掉,或把這個點之前的壓掉。2026 年 6 月起還多了一件事,/clear 清空之後,還能從選單頂端回到前一場對話。
好用。但它的守備範圍比多數人以為的窄很多。
救得回 救不回 AI 用編輯工具改的檔案 bash 指令做的(rm、mv、cp) 對話歷史 子代理在背景改的 最近 100 個檢查點 外部程式或另一個視窗改的 大約 30 天內 連結檔(symlink、hard link)
它只追蹤自己動過的那隻手
還原能救回來的,是 AI 透過檔案編輯工具改的東西。同一場對話裡,如果它是用指令去刪檔、搬檔、覆蓋檔,那一段就不在快照裡。這不是 bug,是設計:快照記的是編輯工具的動作,不是整個磁碟的狀態。
子代理也一樣。你派出去在背景跑的那些,它們的編輯不進主對話的檢查點,官方直接寫明要用 git 還原。你在另一個終端機或編輯器改的東西,它更看不到。
還有兩個時間上的限制:檔案快照只保留最近 100 個檢查點,工作階段資料預設大約 30 天就會清掉。太舊的點按下去,會告訴你沒有檔案被還原。連結檔在還原時會被跳過,它會在訊息裡說跳過了幾個。
所以兩套要搭著用
我的分工是這樣:還原鍵管「這一小時」,git 管「這一週」。
寫到一半發現方向錯了,退回三步、重講一次,用還原鍵,快而且連對話一起倒回去。整段功能做壞了、昨天的版本才是對的、或者剛剛那個災難是 bash 指令造成的,用 git。
這也解釋了為什麼那句老話還是對的:先 commit 再讓它動手。commit 不是給工程師的儀式,是替還原鍵補上它救不到的那一半。動大工程之前,我的習慣是先 commit 一次,再開一條分支,然後才放手讓它跑。
動手做
現在就打一次 /rewind,把選單五個選項看過一遍,認一下哪個是只還原對話、哪個是只還原程式碼。認得出來,出事時才不會慌。
長對話塞太滿的時候,用「摘要到這裡」把前半段壓掉,原始訊息還留在紀錄裡,只是不再佔用視窗。
要它自己講清楚剛剛動了什麼,交辦之前先貼這段:
接下來這個任務你動手之前,先回答我三件事,不要開始做: 1. 你會用檔案編輯工具改哪些檔案?逐一列出。 2. 你會用哪些 shell 指令?其中哪些會刪除、搬移或覆蓋既有檔案? 3. 上面第 2 題列到的那些,如果做壞了,內建的還原救不回來。 告訴我你建議我先做哪一個 git 動作當安全網。 確認完我會說「開始」,你才動手。
做對了的樣子:你分得出哪些災難該用還原鍵、哪些該用 git;動大工程前你會先 commit;你知道子代理改的東西不在檢查點裡;三十天前的專案你不會指望它還倒得回去。
站內延伸
- 存檔與還原的三個動作 → 不會寫程式也要懂的 Git
- 讓它在隔離的地方試錯 → 別讓 AI 在主線上試錯
- 交接與留痕的做法 → 找方法AI 留痕與交接
來源: Claude Code:Checkpointing(/rewind 與雙擊 Esc、選單選項、只追蹤編輯工具、bash 與子代理的改動救不回、100 個檢查點與約 30 天保留、連結檔跳過);Claude Code:週報 2026-w20(「摘要到這裡」壓縮先前脈絡);Claude Code:週報 2026-w26(/rewind 可回到 /clear 之前的對話)。
內建的還原救得回 AI 用編輯工具改的檔案和對話,救不回指令刪的、子代理改的、別的視窗改的,而且只留最近一百個點、大約一個月。它管這一小時,git 管這一週,兩套要搭著用。真正的習慣只有一個:動大工程之前先 commit。
還原鍵管這一小時,
版本紀錄管這一週
什麼時候看這張:你以為它會自動存檔,動大工程前就不想先備份了。
- 它只記編輯工具的動作,不記整個磁碟
- 檢查點只留最近一百個,大約一個月
- 動大工程之前先存一次檔,補上它救不到的那半
第一個動作打開還原選單,把五個選項看過一遍,認出哪個只還原對話、哪個只還原程式碼。輸入 /rewind 開選單,三分鐘。