TellWorldAI 世界档案
问档案English

首页›实践›实践

实践

Claude Code 检查点:改坏了怎么回退

Claude Code 的检查点会在每次提示前记下代码状态,用 /rewind 可以回退代码、对话或两者,也能压缩对话;哪些改动追不回来,也要先弄清楚。

这篇适合谁

适合用 Claude Code 改代码时遇到过「改着改着就改坏了」的人。读完你能用 /rewind 回到之前的某一步,分清回退的是代码、对话还是两者,并知道哪些改动它追不回来,需要靠 Git 之类的版本管理兜底。

它是什么

检查点是 Claude Code 自动做的快照。你每发出一条会开始新回合的提示,它就会先记下当时的代码状态。它跟踪的是 Claude 用文件编辑工具做出的改动。检查点只用于会话内的快速回退,不能代替版本控制。[1]

准备

  • 在项目里用 Claude Code 工作即可,检查点会自动记录,不需要额外开启。[1]
  • 每个会话最多保留最近 100 个检查点的文件快照。快照默认在会话最后一次保存后约 30 天被清理,想保留更久,设置 cleanupPeriodDays。[1]
  • 会话恢复后检查点仍然在,所以你退出再回来,/rewind 照样可用。[1]

打开回退菜单

  1. 输入 /rewind,或在输入框为空时连按两次 Esc。两种方式都会打开回退菜单。[1]
  2. 菜单列出本次会话里你发过的所有提示。选中一条,再选择要做的动作。[1]
  3. 如果输入框里有字,连按两次 Esc 会先清空它,而不会打开菜单。被清掉的文字会存进输入历史,等你在回退菜单里操作完,按 Up 就能调回来。[1]

六个动作分别做什么

  • Restore code and conversation:代码和对话一起回到选中的那一点。[1]
  • Restore conversation:对话回到那条消息,代码保持现在的样子。[1]
  • Restore code:只回退文件改动,对话保留。[1]
  • Summarize from here:把从这一点往后的对话压缩成摘要,腾出上下文空间。[1]
  • Summarize up to here:把这一点之前的消息压缩成摘要,之后的消息原样保留。[1]
  • Never mind:什么都不做,回到消息列表。[1]

选择「恢复对话」或「从这里开始总结」之后,那条消息原来的提示会被放回输入框,你可以直接重发,也可以改一改再发。[1]

总结不会改动磁盘上的文件,原始消息仍然保存在会话记录里,Claude 之后还能引用其中的细节。[1]

两个回退代码的选项,只有在所选检查点记录了可以回退的文件改动时才会出现。如果之后没有捕捉到文件改动,菜单里就只剩下「恢复对话」、两个总结选项和「Never mind」。[1]

什么时候用检查点

检查点适合几种情况:想试另一种实现方式,又不想丢掉起点;刚才的改动弄坏了功能,想快速撤回;边做功能边迭代,放心试各种变体;会话很长,想从中间开始压缩上下文,同时保留最初的指令。[1]

哪些改动回退不了

  • Bash 命令的改动:Claude 用文件编辑工具改过某个文件之后,/rewind 会撤销之后 Bash 命令对这个文件做的改动。但如果某个文件只被 Bash 命令改过,它不会被跟踪,保持原样。这类改动要用 Git 之类的版本控制来还原。[1]
  • 子代理的改动:子代理的编辑通常不会被记入检查点。大多数子代理在回退时,只恢复 Claude 已经在本次对话里编辑过的文件,它对其他文件的改动会保留。[1]
  • 会话之外的改动:检查点只跟踪本次会话里编辑过的文件。你在 Claude Code 之外的手动修改,以及其他并行会话的编辑,通常不会被记录。[1]
  • 回合中途发送的消息:Claude 还在工作时输入的消息,在回退菜单里可能被标为 No code restore,因为它没有自己的检查点。想撤销 Claude 在这一整个回合里做的文件改动,应选择开始这个回合的那条提示,再选 Restore code。[1]
  • 符号链接和硬链接:检查点不会回退这类文件。选择 Restore code 时,Claude Code 会跳过它们,并显示「Restored the code, but skipped N files」的警告。[1]

常见问题

**回退时报 No files were restored。** 说明那个检查点的快照已经被清理了,原因是会话超过了保留期。想避免这种情况,就设置 cleanupPeriodDays。[1]

回退后,消息又回来了。 如果你在发出下一条提示之前退出,被回退的消息会在下次打开时回来。要删掉它们,就在会话里再次运行 /rewind,选中同一条提示,然后选择 Restore conversation。退出前最好先发一条提示,因为 Claude Code 是把回退后的对话连同这条提示一起保存的。[1]

**执行过 /clear,想找回原来的会话。** 在同一个 Claude Code 进程里执行过 /clear 之后,回退菜单顶部会多出一项 /resume <session-id> (previous session),选它就能回到 /clear 之前的对话。[1]

想知道哪些路径被跳过了。 先用 /debug 打开调试日志,再做恢复。日志文件在 ~/.claude/debug/<session-id>.txt,里面会写明每个被跳过的路径。[1]

下一步

完整的限制说明和回退菜单的细节,以官方的检查点文档为准。要做永久的版本历史和团队协作,还是要用 Git。[1]

来源

  1. 1
    CheckpointingAnthropic Claude Code docs

引用本页: Claude Code 检查点:改坏了怎么回退. TellWorld, https://www.tellworld.net/zh/practice/practice-claude-code-checkpointing. 更新于 2026-11-14

相关动态