Claude Code 在你每次发 prompt 前自动给代码状态拍快照(checkpoint),随时可以 /rewind 回去。但它只追踪 Claude 用文件编辑工具做的修改——bash 命令、subagent、你自己在编辑器里的改动都不在保护范围内。把它当 git 用,迟早吃亏。
一句话结论
结论
改坏了先
/rewind(或连按两次 Esc)回退到出事前的 checkpoint;但 checkpoint 只是“会话级撤销”,bash 改动、subagent 编辑、外部修改它都回不了——那些要靠 git。官方官方定位原话方向:checkpoint 是 local undo,git 是 permanent history,前者补充后者、不替代后者。
做法步骤
- 打开回退菜单。运行
/rewind,或在输入框为空时连按两次Esc。官方菜单列出本会话你发过的每条 prompt——每条 prompt 都自动建了一个 checkpoint,会话内保留最近 100 个 checkpoint 的文件快照,而且 checkpoint 随会话保存,恢复会话后照样能 rewind(会话默认 30 天后清理,可用cleanupPeriodDays调整)。 - 选回退点和回退内容。官方选中某条 prompt 后有三种恢复:代码+对话都回退、只回退对话(代码保持现状)、只回退代码(对话保留,适合“思路对了但改错了”)。另有两个 Summarize 选项用于压缩上下文,不动磁盘文件。预期:回退代码后,Claude 编辑过的文件恢复到该 checkpoint 时的内容。
- 核对哪些改动其实没被回退。这是本 Tip 的关键——官方checkpoint 明确不追踪:
回退代码时如果出现 “Restored the code, but skipped N files” 警告,说明有链接类路径被跳过,可先
改动来源 /rewind 能回退? 怎么办 Claude 的文件编辑工具(Edit/Write) 能 放心用 rewind bash 命令( rm/mv/cp、脚本、代码生成器)不能 git 或手工恢复 subagent 的编辑(含后台 /code-review --fix)不能(前台 fork 例外) 用 git 回退 你在编辑器里的手改、其他并发会话 不追踪 用 git 符号链接/硬链接指向的文件 跳过并警告 手工或让 Claude 反向编辑 /debug开日志再回退,日志会点名每个被跳过的路径。官方 - 建立分工习惯。本站观点实践口径:开工前保证工作区干净(git 有底),实验性大改放心让 Claude 冲,失败就 rewind 换思路;阶段性成果及时 commit。这样 rewind 管“分钟级试错”,git 管“小时级里程碑”,两层保险互不抢戏。checkpoint 机制的完整讲解见 D6 · checkpoint 与会话管理课;想从源头少改坏,配套读给它能自己跑的验证。
可直接抄的 prompt
刚才的修改把项目改坏了,先停下,不要继续改。帮我评估回退方案:
1. 列出这个会话里你用文件编辑工具改过的所有文件(这些我可以用 /rewind 恢复)。
2. 列出你通过 bash 命令产生的文件改动(新建/删除/移动/脚本改写,这些 /rewind
恢复不了),并给出用 git 恢复它们的具体命令(git status / git checkout / git clean)。
3. 告诉我推荐的恢复顺序,以及恢复后如何验证项目回到了可用状态。
只分析,先不要执行任何恢复命令。
来源与最后核实日期
- 官方Checkpointing——自动快照、100 个 checkpoint、rewind 菜单五选项、四类不追踪的改动、local undo vs permanent history,抓取于 2026-08-05。
- 最后核实:2026-08-05 · volatility:high(绑定 checkpoint 行为细节与版本,会定期复核)。