Claude Code 学习站
Mingyu's Library

学习站 / 实战 Tip / A · 稳定与质量

改坏了怎么回退(checkpoint 不是 git)

Claude 一顿操作把项目改坏了——先搞清哪些改动 /rewind 能救、哪些只有 git 能救,再动手回退。

Claude Code 在你每次发 prompt 前自动给代码状态拍快照(checkpoint),随时可以 /rewind 回去。但它只追踪 Claude 用文件编辑工具做的修改——bash 命令、subagent、你自己在编辑器里的改动都不在保护范围内。把它当 git 用,迟早吃亏。

一句话结论

结论 改坏了先 /rewind(或连按两次 Esc)回退到出事前的 checkpoint;但 checkpoint 只是“会话级撤销”,bash 改动、subagent 编辑、外部修改它都回不了——那些要靠 git。官方官方定位原话方向:checkpoint 是 local undo,git 是 permanent history,前者补充后者、不替代后者。

做法步骤

  1. 打开回退菜单。运行 /rewind,或在输入框为空时连按两次 Esc官方菜单列出本会话你发过的每条 prompt——每条 prompt 都自动建了一个 checkpoint,会话内保留最近 100 个 checkpoint 的文件快照,而且 checkpoint 随会话保存,恢复会话后照样能 rewind(会话默认 30 天后清理,可用 cleanupPeriodDays 调整)。
  2. 选回退点和回退内容。官方选中某条 prompt 后有三种恢复:代码+对话都回退只回退对话(代码保持现状)、只回退代码(对话保留,适合“思路对了但改错了”)。另有两个 Summarize 选项用于压缩上下文,不动磁盘文件。预期:回退代码后,Claude 编辑过的文件恢复到该 checkpoint 时的内容。
  3. 核对哪些改动其实没被回退。这是本 Tip 的关键——官方checkpoint 明确不追踪:
    改动来源/rewind 能回退?怎么办
    Claude 的文件编辑工具(Edit/Write)放心用 rewind
    bash 命令(rm/mv/cp、脚本、代码生成器)不能git 或手工恢复
    subagent 的编辑(含后台 /code-review --fix)不能(前台 fork 例外)用 git 回退
    你在编辑器里的手改、其他并发会话不追踪用 git
    符号链接/硬链接指向的文件跳过并警告手工或让 Claude 反向编辑
    回退代码时如果出现 “Restored the code, but skipped N files” 警告,说明有链接类路径被跳过,可先 /debug 开日志再回退,日志会点名每个被跳过的路径。官方
  4. 建立分工习惯。本站观点实践口径:开工前保证工作区干净(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 行为细节与版本,会定期复核)。