本文根据 Claude Code 官方文档《Checkpointing》《Commands》《Manage sessions》整理,资料核对于 2026-11-05。配图为本站整理的示意图,不是界面截图。本站(bigolab.com)不是 Anthropic 官方网站。
适用于谁
- Claude Code 把代码改坏了,想「撤回到改之前」的人;
- 搜「claude code 代码回退」,不确定是该用
/rewind还是 git 的人; - 回退之后文件没变、或提示
No files were restored的人。
结论先说
- 回退入口是
/rewind,或者在输入框为空时连按两次Esc。官方给它的别名是/checkpoint和/undo。 - Claude Code 在你每发一条会开启一轮对话的提示前,自动记一个检查点(checkpoint),不需要你手动保存。
- 菜单里有三种恢复:恢复代码并回退对话、只回退对话、只恢复代码。另外有两个「摘要」选项,用来腾出上下文空间。
- 检查点只跟踪 Claude 用文件编辑工具做的改动。 只被 Bash 命令改过的文件、子代理改的文件、你自己在外面改的内容,都不在恢复范围内。
- 它不能代替 git。 官方原话的意思是:检查点用于会话级的快速恢复,永久的版本历史和协作仍要用 git。

图:本站根据 Claude Code 官方文档:Checkpointing 整理的示意图
一、检查点是怎么记的
官方说明:
- 每条开启一轮对话的提示都会生成一个新的检查点;
- 会话里保留最近 100 个检查点的文件快照,更早的会被清理;
- 检查点跟对话一起保存,所以恢复(resume)会话之后仍然可以
/rewind,恢复会话的方法见 /guides/claude-code-resume-history; - 文件快照在「保留期清理」里删除,默认是会话最后保存快照后约 30 天。想保留更久,官方给的设置项是
cleanupPeriodDays。快照被删后再回退,可能报No files were restored。
二、怎么回退:菜单里每一项是什么意思
输入 /rewind,或在输入框为空时连按两次 Esc。如果输入框里有字,连按两次 Esc 会清空输入而不是打开菜单,被清掉的文字会存进输入历史,回退完按 ↑ 可以找回。
菜单会列出你在本次会话里发过的提示。选定要回到的那一点后,可以选择:
| 菜单项(官方英文) | 作用 |
|---|---|
| Restore code and conversation | 代码和对话都回到那个时间点 |
| Restore conversation | 对话回到那条消息,代码保持现状 |
| Restore code | 撤销文件改动,对话保留 |
| Summarize from here | 把从这里往后的对话压缩成摘要,腾出上下文 |
| Summarize up to here | 把这里之前的对话压缩成摘要,之后的消息保留 |
| Never mind | 回到消息列表,不做任何改动 |
几个细节:
- 两个恢复代码的选项,只有当所选检查点之后确有被跟踪的文件改动时才出现;
- 选了恢复对话,或「Summarize from here」后,所选那条提示会回到输入框,你可以直接重发,或改几个字再发;
- 「摘要」不改磁盘上的文件,原始消息仍留在会话记录里。要引导摘要的重点,可以用方向键选中摘要选项,在 add context (optional) 那一行输入说明再按
Enter; - 摘要的作用类似有针对性的
/compact,上下文满了怎么办见 /guides/claude-code-context-compact。
三、回退不了的几种情况

图:本站根据 Claude Code 官方文档:Checkpointing 整理的示意图
1. 只被 Bash 命令改过的文件。 官方的区分很细:Claude 在本次对话里用文件编辑工具改过某个文件之后,/rewind 会连同之后 Bash 命令对该文件的改动一起撤销;但一个只被 Bash 命令改过、Claude 从没用编辑工具碰过的文件不被跟踪,保持原样。这类文件用 git 还原。
2. 子代理的改动。 子代理用编辑工具改文件,但 Claude Code 通常不会把这些改动记进你会话的检查点。官方说:前台运行的、带 context: fork 的 Skill 在你的回合里改工作区,可以正常还原;其他子代理(包括默认后台运行的 fork Skill)只会还原 Claude 在你对话里已经改过的文件,其他文件要用 git。
3. 外部改动。 检查点只跟踪本会话里编辑过的文件。你在 Claude Code 之外手动改的,以及别的并发会话的改动,通常不记录。
4. 软链接和硬链接。 恢复代码时,Claude Code 会跳过软链接或硬链接的路径,并提示 Restored the code, but skipped N files。官方举的例子是 dotfile 管理工具做的链接、pnpm 硬链接的文件。想知道跳过了哪些,先用 /debug 打开调试日志再回退,日志写在 ~/.claude/debug/<session-id>.txt。
5. 你在 Claude 工作时发的消息。 回合进行中发的消息,在菜单里可能标成 No code restore,因为它没有自己的检查点。官方的办法是选开启这一回合的那条提示,再选 Restore code 或 Restore code and conversation,这样整回合 Claude 的文件改动都会撤销。
6. 回退后退出又回来。 官方提醒:如果回退后、发出下一条提示之前就退出了,被回退的消息可能在下次回来时重新出现。要再删掉,就再 /rewind 选同一条提示,选 Restore conversation。所以回退后先发一条提示再退出,Claude Code 才会把回退后的对话连同这条提示一起保存。已经恢复的文件保持回退后的样子。
四、/clear 之后还能回退吗
可以,有条件。如果你在同一个 Claude Code 进程里执行过 /clear,回退菜单顶部会多出一条 /resume <session-id> (previous session),选它可以回到清空之前的那段对话;这条在你退出 Claude Code 或恢复另一个会话之后就没有了。
五、想试另一条路,不想覆盖原来的
官方在摘要一节写明:想分叉出去试不同做法、又不动原会话,用 /branch,或命令行里 claude --continue --fork-session。会话分支的细节见 /guides/claude-code-resume-history,并行多个会话互不干扰可以看 /guides/claude-code-worktree。
稳妥做法:git 和检查点配合
官方明确说检查点不是版本控制。更稳的习惯(这是本文的建议,不是官方原话):
- 开始一个较大的改动前,先让 git 有一个干净的提交;
- 小范围试错、想马上撤销,用
/rewind; - 涉及 Bash 命令批量改文件、子代理改动,或回退提示跳过文件时,用
git status和git restore处理。
想少点几次确认、又不想放得太开,可以先看 /guides/claude-code-stop-asking-permission。
常见问题
Q:快捷键按两次 Esc 没反应?
先看输入框是否为空。有文字时两次 Esc 是清空输入。其他快捷键见 /guides/claude-code-keyboard-shortcuts。
Q:回退会不会把 git 提交也撤掉?
官方没有说检查点会动 git 历史,它跟踪的是文件编辑工具的改动,具体以官方页面为准。
Q:重启电脑后还能回退吗?
官方说检查点随会话保存,恢复会话后仍可用,前提是快照没有被保留期清理。
相关教程
参考资料
- Claude Code 官方文档:Checkpointing — https://code.claude.com/docs/en/checkpointing
- Claude Code 官方文档:Commands — https://code.claude.com/docs/en/commands
- Claude Code 官方文档:Manage sessions — https://code.claude.com/docs/en/sessions
0 条评论
还没有评论,来抢沙发~