Claude Code 代码改坏了怎么回退:/rewind 或连按两次 Esc,三种恢复方式,哪些改动回退不了

Claude Code 改坏了代码,可以输入 /rewind(别名 /undo),或在输入框为空时连按两次 Esc,选择只恢复代码、只回退对话或两者一起。本文讲菜单里每一项的含义,以及 Bash 命令、子代理、外部改动为什么回退不了。

NNathaniel bigo··原创首发·AI 辅助撰写
10 分钟读完
资料核对于 2026-11-05 · 依据官方文档与公开资料整理 Pro 账号
本文根据 Claude Code 官方文档《Checkpointing》《Commands》《Manage sessions》整理,资料核对于 2026-11-05。配图为本站整理的示意图,不是界面截图。本站(bigolab.com)不是 Anthropic 官方网站。

适用于谁

  • Claude Code 把代码改坏了,想「撤回到改之前」的人;
  • 搜「claude code 代码回退」,不确定是该用 /rewind 还是 git 的人;
  • 回退之后文件没变、或提示 No files were restored 的人。

结论先说

  1. 回退入口是 /rewind,或者在输入框为空时连按两次 Esc。官方给它的别名是 /checkpoint 和 /undo。
  2. Claude Code 在你每发一条会开启一轮对话的提示前,自动记一个检查点(checkpoint),不需要你手动保存。
  3. 菜单里有三种恢复:恢复代码并回退对话、只回退对话、只恢复代码。另外有两个「摘要」选项,用来腾出上下文空间。
  4. 检查点只跟踪 Claude 用文件编辑工具做的改动。 只被 Bash 命令改过的文件、子代理改的文件、你自己在外面改的内容,都不在恢复范围内。
  5. 它不能代替 git。 官方原话的意思是:检查点用于会话级的快速恢复,永久的版本历史和协作仍要用 git。

Claude Code 回退代码的四个步骤:打开菜单、选提示、选动作、重发

图:本站根据 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

Nathaniel 的更多内容

  1. 01

    Claude Code 支持语音输入吗:/voice 开启,按住空格说话,要 claude.ai 账号和本地麦克风,支持的听写语言有限

    Claude Code 命令行版支持语音输入(voice dictation):输入 /voice 开启,按住空格说话,转写文字直接进输入框。但必须用 claude.ai 账号登录、有本地麦克风,SSH 和云端会话不能用;官方的听写语言清单里没有中文。

    Claude0
  2. 02

    Claude Code 任务完成提醒、提示音、Windows 通知怎么设:终端响铃、Notification hook 和 Stop hook 的区别

    Claude Code 做完任务想收到提醒,官方有三条路:在设置里把 preferredNotifChannel 设为 terminal_bell 让终端响铃;用 Notification hook 在它等你输入或批准时弹窗;用 Stop hook 在每次回复完毕时执行命令。本文含 Windows 写法和排查。

    Claude0
  3. 03

    Claude Code 状态栏怎么配置:/statusline 一句话生成,显示模型、上下文占用和 5 小时 / 7 天用量

    Claude Code 底部状态栏可以自己定制:用 /statusline 说一句话让它生成脚本,或在 settings.json 的 statusLine 里指向自己的脚本。本文讲怎么配、脚本能读到哪些字段(模型、上下文、花费、订阅用量)、Windows 写法和不显示时的排查。

    Claude0
  4. 04

    Claude Code 提示未登录、怎么退出登录、切换账号:/login、/logout、/status 和 CLAUDE_CONFIG_DIR

    Claude Code 提示 Not logged in 时运行 /login;退出登录用 /logout;想同时用两个账号,官方的做法是给每个账号单独设 CLAUDE_CONFIG_DIR。本文讲几个登录命令、登录凭据存哪、/status 怎么看当前账号,以及 API 密钥覆盖订阅的坑。

    Claude0
  5. 05

    Claude Code 安装卡住、很慢、失败怎么办:先测下载服务器,再按报错对照(下载中断、Killed、PATH、PowerShell)

    Claude Code 安装卡住或失败,官方的排查顺序是:先测 downloads.claude.ai 能不能连上,再按报错分类处理。本文整理下载中断、Linux 内存不足 Killed、Docker 里卡住、Windows 命令用错 shell 等情况的官方对策。

    Claude0
  6. 06

    Claude Code 怎么连接远程服务器(SSH):桌面版加 SSH 环境,或登录服务器后在终端里直接用

    Claude Code 连远程服务器有两种官方做法:桌面版 Code 标签页里添加 SSH 环境,桌面版会自动在服务器上装好 Claude Code;或者自己 SSH 登录服务器,在终端里安装并登录。本文讲两种做法的步骤、服务器要求和常见报错。

    Claude0

同产品的其他教程

  1. 01

    Claude Code 历史记录在哪、文件夹在哪:~/.claude 里每个文件是什么,哪些 30 天后会被清掉,哪些不能删

    Claude Code 的会话记录、提示历史、配置和登录凭据都在用户目录下的 .claude 文件夹(Windows 是 %USERPROFILE%\.claude)。本文按官方文档列出各文件的用途、默认保留期、哪些不能删,以及怎么清理、怎么换位置。

    Claude0
  2. 02

    Claude Code 怎么导出会话、导出上下文:/export、/copy 和 .jsonl 会话记录的区别

    Claude Code 导出对话用 /export(纯文本,可直接写入文件),只要最后一条回答用 /copy。本文讲两个命令的区别、会话记录 .jsonl 在哪、脚本怎么拿结构化结果,以及「导出上下文」换新会话时官方给的做法。

    Claude0
  3. 03

    别让 Claude Code 一直问你能不能执行:选 don't ask again、写 allow 规则、切 acceptEdits 或 auto 模式

    Claude Code 总弹「能不能执行」,可以分三层解决:弹窗里选 don't ask again 存规则,用 allow 规则放行常用命令,或按 Shift+Tab 切到 acceptEdits、auto 模式。本文按场景讲,并说明哪些提示官方就是关不掉。

    Claude0
  4. 04

    Claude Code 官网下载在哪、怎么安装:原生安装、npm、Homebrew、WinGet 怎么选,Windows 要不要装 Git

    搜「Claude Code 官网下载」「为什么要装 Git」「为什么不推荐 npm」,官方文档的答案是:安装说明在 code.claude.com,原生安装标为推荐,npm 要 Node.js 22,Windows 的 Git 是可选的。本文按官方文档逐项说明。

    Claude0
  5. 05

    Claude Code 无法粘贴、无法读取图片怎么办:Ctrl+V 和 Alt+V 的区别,拖放和路径三种放图方法

    Claude Code 里粘贴不了截图、读不到图片?官方文档给了三种把图放进对话的方法:拖放进窗口、Ctrl+V 粘贴(Windows 和 WSL 用 Alt+V)、直接写图片路径。官方没有为「粘贴失败」单列排查,本文把官方写明的做法和通用排查分开讲。

    Claude0
  6. 06

    Claude 报错 529 overloaded_error 怎么办:API 暂时过载是什么意思,和 429、500、504 怎么区分

    Claude API 返回 529 overloaded_error,官方的解释是 API 暂时过载,全体用户高峰时都可能遇到,不是你的 Key 或余额出了问题。本文按官方错误页(2026-10 查询)讲清它和 429、500、504 的区别、SDK 怎么自动重试、流式请求中途报错怎么处理。

    Claude0

0 条评论

登录 后参与评论

还没有评论,来抢沙发~