Deepseek ArtifactsDeepseek Artifacts
检查点指南

Claude Code 检查点详解:如何回滚代码与对话

Claude Code 的每一条提示都是一个可恢复的检查点。/rewind 与双击 Esc、三种恢复选项、检查点能捕获什么(以及捕获不了什么)、保存期限,以及它们和 git 如何分工——全部对照官方文档核实。

一分钟看懂

  • 检查点是自动的:每条开启新回合的提示都会先给代码拍快照。无需任何设置——你只需要知道怎么回滚。
  • 运行 /rewind(或输入框为空时按两次 Esc)会弹出恢复点菜单,每一项都能选:同时恢复代码和对话、只恢复对话、或只恢复代码。
  • 回滚是会话级的恢复,不是版本控制:Bash 造成的副作用(rm、mv、cp)、大多数子智能体的修改、你自己手动改的内容都不在捕获范围内。git 照常提交。
  • Claude Code 为每个会话保留最近 100 个检查点,保存约 30 天(可用 cleanupPeriodDays 调整)。检查点在 /resume 之后仍然存在,昨天的会话今天照样能回滚。

12 Claude Code Features Every Engineer Should Know: Subagents, CLAUDE.md, Checkpoints, MCP, and more

频道:ByteByteAI7:30

看视频

Claude Code Checkpoints Are Here (First Look)

频道:Build at Scale8:16

看视频

Checkpointing — official documentation

官方文档:code.claude.com/docs

看视频

本页的每一个恢复选项、限制和保存期限数字,都对照官方检查点文档核实过;上面的视频是画面与事实来源。

截图版权归各自创作者所有,并深链到对应时间点;未使用任何人脸镜头。

用 Claude Code 检查点回滚,一步一步来

第 1 部分 — 什么会被捕获

  1. 1

    弄清检查点是什么

    检查点是在每条开启新回合的提示之前自动拍下的代码状态快照。它存在的意义:一次失败的重构、一次下猛了 edits、一个跑偏的方向,都只隔一条命令就能撤销——不用 stash,不用 commit,没有任何仪式。

    Claude Code checkpoints feature intro card with the snapshot camera icon from a twelve features explainer
    检查点的卖点:每次编辑前先快照,实验翻车了就把代码和对话一起滚回去。跳到 2:15 观看
  2. 2

    每条开启回合的提示都会生成一个

    检查点不用你手动创建——每条让 Claude 开始干活的提示都会给即将修改的文件拍快照。一段长会话会积累出一条恢复点链,一条提示对应一个,就像给仓库装的自动存档点。

    Claude Code edit loop diagram showing a snapshot captured for every edit with checkpoint snapshots numbered one through k
    编辑循环:Claude 改文件,快照落进检查点链,下一条提示开启新一轮。跳到 2:33 观看
  3. 3

    用 /rewind 打开回滚菜单

    在提示符输入 /rewind 即可列出当前会话的检查点。键盘路线更快:输入框为空时连按两次 Esc。(输入框里有文字时,双击 Esc 只会清空输入——按 ↑ 可以找回刚才输入的内容。)

    Claude Code /rewind command typed in the terminal to open the checkpoint list of the current session
    在 Claude Code 提示符输入 /rewind——检查点列表直接在会话里打开。跳到 2:40 观看
  4. 4

    选定恢复点

    菜单会列出每个检查点以及创建它的提示——「把代码和/或对话恢复到……之前」。导航到出问题那一刻,按 Enter,选择要恢复什么。

    Claude Code rewind restore menu offering to restore the code and conversation to the point before an earlier prompt
    恢复菜单:挑出错前的那条提示——红色高亮的条目是这个会话里更早的问题。跳到 2:45 观看

第 2 部分 — 回滚菜单

  1. 5

    代码和对话一起恢复

    完全回滚:文件回到快照状态,对话也分叉回那个时点。整个方向都错的时候用它——代码和 Claude 对任务的记忆一起重置。

  2. 6

    只恢复代码——保留对话

    只恢复代码会把文件回滚,对话停在原地。完美对应「思路是对的,结果是错的」:Claude 记得你们讨论过的一切,只有那些坏掉的修改消失了。

  3. 7

    只恢复对话——让聊天分叉

    第三个选项把对话回退到较早的时点,文件纹丝不动——就是检查点出现之前 double-Esc 的分叉行为。代码没问题、只是讨论钻进死胡同的时候用它。

  4. 8

    不回滚,改为从这里总结

    菜单里还有「Summarize from here」和「Summarize up to here」——一种精准版的 /compact,把对话中的一段压缩成摘要,同时保留你的初始指令。真正要分叉就用 /branch 或 claude --continue --fork-session。

第 3 部分 — 限制与 git 习惯

  1. 9

    知道回滚救不了什么

    检查点追踪的是 Claude 做出的文件编辑,而不是所有事情:通过 Bash 做的改动(rm、mv、cp)、大多数子智能体的修改、你自己的手动修改、其他会话的变更都不在捕获范围。符号链接会被跳过——恢复时会提示「Restored the code, but skipped N files」。

  2. 10

    检查点与 git:分工协作

    检查点负责快速的会话级恢复:撤销这条提示、换个思路重试。git 负责永久历史:提交能用的状态、开分支、推送。推荐的节奏是:探索时放心回滚,值得保留的改动郑重提交。

  3. 11

    留心保存期限

    Claude Code 为每个会话保留最近 100 个检查点,并在大约 30 天后清扫旧快照——和会话记录用的是同一个 cleanupPeriodDays 设置。想让 /rewind 和 /resume 够到更早,就在 settings.json 里把期限调长。

检查点 vs git vs /branch vs double-Esc vs /compact

Claude Code 给了你五种「回去」的方式——它们解决的问题各不相同:

  • 1检查点(/rewind)——即时、自动、会话级:把代码、对话或两者撤销到任意提示边界。零配置,不永久,不共享。
  • 2git——真正的历史:工作值得保留时由你做出的显式提交。检查点永远替代不了它,而是排在安全链条的前一环。
  • 3/branch 和 --fork-session——不碰文件,从当前对话开一条并行时间线。想探索另一条路又想保留两条线的时候用。
  • 4double-Esc——输入框为空时通往同一个回滚菜单的键盘路径;有文字时只会清空输入(历史里还在,按 ↑ 找回)。
  • 5/compact 和「Summarize from here」——不是在时间里移动,而是把对话压缩:拿细节换上下文空间,决定保留。

一个简单的心智模型:失误用回滚,进展用 git,分叉用 fork,腾地方用 summarize。

回滚没达到预期?

检查点四个常见的意外,以及各自的应对:

  • 1「No files were restored」。快照已被清扫——超过了 100 个检查点的上限,或者约 30 天的保存期已过。想让尾巴留得更长,就把 settings.json 里的 cleanupPeriodDays 调大。
  • 2「Restored the code, but skipped N files」。符号链接和硬链接按设计会被跳过。运行 /debug,到 ~/.claude/debug/<session-id>.txt 里查确切被跳过的路径,然后手动恢复它们。
  • 3通过 Bash 改的文件纹丝不动。rm、mv、cp 是在快照系统之外的 shell 里跑的——用 git checkout 撤销,或者从备份恢复。
  • 4想要的那条提示不在列表里。回合中途插入的排队消息不会生成检查点——改为回滚到最近一条回合开头的提示;子智能体的修改可能得靠 git revert。
  • 5压根没有 /rewind 命令。检查点是 Claude Code 2.0 才加入的——先跑 claude update(或 claude doctor)确认版本;另外注意,早于该功能的老会话没有可回滚的快照。

黄金法则:改动重要就提交。检查点是安全气囊,git 是安全带——两个都系上。

检查点常见问题

相关攻略