Checkpoint 与 Rewind:安全撤回 Claude Code 的修改

Claude Code 会在编辑前建立 checkpoint,/rewind 可以恢复代码、恢复对话或从旧节点继续。本篇讲清它与 Git 回滚的边界、恢复前检查和误修改演练。

教程基准:Claude Code v2.1.224(当前最新版,核验于 2026-08-07) · 最后核验:2026-08-07 · 适用版本:建议使用最新版 · 官方文档

继续学习 Git 安全

Checkpoint 是什么

Claude Code 使用文件编辑工具前会自动记录检查点。每个用户提示通常形成一个新节点,你可以通过 /rewind/checkpoint/undo 或连续按两次 Esc 打开恢复界面。

它适合处理“刚才这一轮改坏了”“讨论方向走偏了”“我想从之前的方案重新开始”。但它不是 Git、备份或数据库事务。

三种恢复不要选错

恢复界面通常会让你选择恢复范围:

确认前先看目标节点和影响文件。不要因为想删掉一句聊天内容,就误选同时恢复代码。

Checkpoint 不会保护什么

自动 checkpoint 主要跟踪 Claude 文件工具造成的编辑。下面这些不能假设一定能恢复:

因此高风险任务仍然需要 Git 分支、提交、数据库备份、临时环境和权限审批。

恢复前的安全检查

当工作区本来就有你的未提交修改时,先暂停并检查:

请只读检查当前状态,不要恢复、修改或执行 Git 写操作。

请列出:
1. 当前有哪些未提交文件。
2. 哪些修改是本任务开始前就存在的。
3. 最近一个 checkpoint 涉及哪些文件。
4. 只恢复代码会影响什么。
5. 是否有无法由 checkpoint 恢复的 shell 或外部操作。

如果无法区分用户修改和 Claude 修改,不要立即 rewind。先复制关键 diff、创建安全分支或人工备份目标文件,再决定恢复范围。

一个低风险演练

第一次不要在真实业务改坏后才学习恢复。准备一个练习仓库:

  1. 提交干净基线。
  2. 让 Claude 修改一段练习文案。
  3. 再发一个提示,让它做第二处独立修改。
  4. 打开 /rewind,观察两个提示对应的节点。
  5. 选择只恢复第二轮代码。
  6. git diff 确认第一轮仍保留、第二轮已撤回。
  7. 再测试只恢复对话,理解它不会自动撤回当前文件。

练习目标不是记按钮,而是能够预测每个选项会留下什么。

Rewind 和 Git 怎么分工

场景优先工具
撤回刚才一轮 Claude 编辑checkpoint / rewind
比较整个任务的所有变化Git diff
保存一个可长期返回的稳定节点Git commit
多任务隔离Git branch / worktree
恢复已经提交的历史Git revert 等经过审查的 Git 操作
撤销生产数据库或远程资源对应系统的备份、回滚和审计流程

Checkpoint 快,Git 边界清楚。专业工作流通常两者一起用:小步探索靠 checkpoint,阶段性稳定结果靠 Git 提交。

恢复后怎么验收

Rewind 完成不代表状态一定正确。恢复后执行:

  1. git status:确认文件集合符合预期。
  2. git diff:确认只撤回目标修改。
  3. 检查用户原有未提交修改是否还在。
  4. 运行受影响模块的最小测试。
  5. 检查是否留下新文件、缓存或后台进程。
  6. 用一句话记录为什么恢复以及下一步方案。

如果撤回后要换方案,先重新进入 Plan Mode,不要立刻让 Claude 用另一种方式大改同一批文件。

Checkpoint 保留期限

检查点跟随会话保存,并会随会话清理策略过期。它适合近期恢复,不适合作为长期版本档案。需要几天后、几周后仍能回到的状态,必须使用 Git 或正式备份。

团队交接时也不要只说“可以 rewind”。应提交清晰分支或补丁,并说明未验证风险,让接手人不依赖你的本机会话历史。

常见误区

最稳的判断方法是:先说明“希望保留什么、希望撤回什么”,再选择恢复类型。任何涉及外部状态的操作,都回到对应系统检查真实结果,不要只看 Claude Code 的对话记录。

验收结果