主题
1.4 检查点 — 你的后悔药
学习目标
- 理解什么是检查点,它在背后做了什么
- 学会用两种方式回退:Esc 和 /rewind
- 分清检查点和 Git 的区别与配合使用
- 通过实战场景掌握检查点的使用时机
什么是检查点?
你有没有过这种经历:改了一堆代码,结果发现改错了方向,想回到之前的状态,但已经来不及了?
Claude Code 的检查点就是为了解决这个问题。
简单说:每次你发一条消息给 Claude Code,它在动手之前会自动拍一张"快照",保存当前所有文件的状态。 就像游戏里的自动存档,随时可以读档。
[截图: 检查点的概念图——时间线上的多个存档点]
举个例子,你发了三条消息:
消息 1:创建一个 React 组件 → [检查点 1]
消息 2:给组件加上动画效果 → [检查点 2]
消息 3:重构组件的状态管理 → [检查点 3]如果消息 3 的重构搞砸了,你可以回退到检查点 2,文件会恢复到"加完动画效果"的状态。消息 3 的所有改动一笔勾销。
重点:检查点是完全自动的,你不需要手动创建。每条消息都有对应的检查点。
怎么回退?
两种方式,随你喜欢。
方式一:按两次 Esc — 最快
在 Claude Code 的对话输入框里,连按两次 Esc 键:
按 Esc → 按 Esc → 弹出回退选项[截图: 连按两次 Esc 后弹出的回退界面]
它会显示最近的检查点列表,选一个就行。文件会立刻回退到那个状态。
这是最快的回退方式,手指不用离开键盘。推荐养成习惯。
方式二:/rewind 命令
在对话框输入:
> /rewind效果和按 Esc 一样,会弹出检查点列表让你选择。
[截图: /rewind 命令显示的检查点列表]
两种方式没有本质区别,只是操作路径不同。Esc 更快,/rewind 更直观。
回退后会发生什么?
回退操作做了两件事:
- 文件恢复:所有被修改的文件回到选定检查点时的状态
- 对话截断:回退点之后的对话消息也会消失
打个比方:你在文档里用 Ctrl+Z 撤销,撤销的文字就没了。检查点回退是一样的道理,不过是针对整个项目的文件。
踩坑提醒:回退后,那些被"撤销"的代码改动是真的消失了。如果里面有你想保留的部分,建议在回退前手动复制出来。
检查点 vs Git
这是新手最容易搞混的概念。一张表讲清楚:
| 对比项 | 检查点 | Git |
|---|---|---|
| 是什么 | 自动快照,临时存档 | 版本控制系统,正式记录 |
| 什么时候创建 | 每条消息自动创建 | 手动 git commit |
| 保存在哪 | Claude Code 会话内 | .git 目录,永久保存 |
| 能回退多远 | 只限当前会话 | 整个项目历史 |
| 关掉 Claude Code 后 | 检查点消失 | Git 记录还在 |
| 适合干什么 | 快速试错、临时回退 | 里程碑保存、团队协作 |
一句话总结:检查点是草稿纸上的涂涂改改,Git 是定稿后的正式出版。
正确的工作流是这样的:
用检查点快速试错 → 满意了 → git commit 保存 → 继续试错 → 满意了 → git commit踩坑提醒:不要只依赖检查点。一旦你对某个阶段的成果满意了,一定要用 Git 提交。关掉 Claude Code 或者开启新对话后,检查点就没了。
实战场景
场景 1:方案 A/B 对比
你不确定用 CSS Grid 还是 Flexbox 做布局:
消息 1:用 CSS Grid 实现这个页面布局
→ 看看效果,还行但不确定
消息 2(回退到消息 1 之前):用 Flexbox 实现同样的布局
→ 对比一下,感觉 Grid 更好
消息 3(再回退到消息 1 之后):OK 就用 Grid 方案,继续优化[截图: A/B 对比场景下的检查点使用流程]
场景 2:大胆试错
你想尝试一个激进的重构方案,但不确定能不能行:
消息 1:把所有的 class 组件改成函数组件 + hooks
→ 改完了,跑一下测试... 测试全挂了
→ 按 Esc Esc 回退
消息 2(回退后):一个一个组件来改,先从最简单的 Header 开始
→ 这次稳了有了检查点,你可以放心大胆地让 Claude Code 尝试各种激进方案。反正不行就回退,零成本。
场景 3:误操作恢复
你:把 UserProfile 组件删掉,我不需要了
Claude Code:已删除 src/components/UserProfile.tsx
你:等等,我说错了,我要删的是 UserCard 不是 UserProfile!
→ 按 Esc Esc 回退,UserProfile.tsx 就回来了检查点的最佳实践
- 大改动前先心里有数:虽然检查点是自动的,但在发出一个可能有大规模改动的指令前,心里要清楚"大不了我回退"。
- 满意就 commit:检查点是临时的,Git 才是永久的。每完成一个小里程碑就
git commit。 - 善用 A/B 测试:不确定哪种方案好?两种都试,检查点让你零成本对比。
- 回退前看 diff:如果只是部分改动不满意,可以先
/diff看看具体改了什么,也许手动调一下就行,不一定要整体回退。
常见问题
Q:检查点有数量限制吗? A:一个会话中的检查点数量没有硬性限制,基本上你发多少条消息就有多少个检查点。
Q:关掉终端再打开,检查点还在吗? A:不在了。检查点只存在于当前会话中。所以重要的进展一定要 Git 提交。
Q:回退后能不能"反悔回退"?就是回退的回退? A:不能直接反悔。一旦回退,后面的状态就没了。所以回退前想清楚。如果实在不确定,可以先用 Git 做一个临时提交保底。
Q:检查点会占很多磁盘空间吗? A:不会。检查点使用的是 Git 底层的快照机制,相同内容不会重复存储。正常使用完全不用担心空间问题。
小结
检查点是 Claude Code 给你的安全网。有了它:
- 不用怕犯错:随时回退,零成本
- 可以大胆试:激进方案先试再说
- 心里有底:最坏的情况也就是回退重来
记住这个组合拳:检查点快速试错 + Git 保存里程碑。这是高效使用 Claude Code 的核心节奏。
下节课我们讲记忆系统——让 Claude Code 真正"认识"你和你的项目。