Skip to content

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 更直观。


回退后会发生什么?

回退操作做了两件事:

  1. 文件恢复:所有被修改的文件回到选定检查点时的状态
  2. 对话截断:回退点之后的对话消息也会消失

打个比方:你在文档里用 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 就回来了

检查点的最佳实践

  1. 大改动前先心里有数:虽然检查点是自动的,但在发出一个可能有大规模改动的指令前,心里要清楚"大不了我回退"。
  2. 满意就 commit:检查点是临时的,Git 才是永久的。每完成一个小里程碑就 git commit
  3. 善用 A/B 测试:不确定哪种方案好?两种都试,检查点让你零成本对比。
  4. 回退前看 diff:如果只是部分改动不满意,可以先 /diff 看看具体改了什么,也许手动调一下就行,不一定要整体回退。

常见问题

Q:检查点有数量限制吗? A:一个会话中的检查点数量没有硬性限制,基本上你发多少条消息就有多少个检查点。

Q:关掉终端再打开,检查点还在吗? A:不在了。检查点只存在于当前会话中。所以重要的进展一定要 Git 提交。

Q:回退后能不能"反悔回退"?就是回退的回退? A:不能直接反悔。一旦回退,后面的状态就没了。所以回退前想清楚。如果实在不确定,可以先用 Git 做一个临时提交保底。

Q:检查点会占很多磁盘空间吗? A:不会。检查点使用的是 Git 底层的快照机制,相同内容不会重复存储。正常使用完全不用担心空间问题。


小结

检查点是 Claude Code 给你的安全网。有了它:

  • 不用怕犯错:随时回退,零成本
  • 可以大胆试:激进方案先试再说
  • 心里有底:最坏的情况也就是回退重来

记住这个组合拳:检查点快速试错 + Git 保存里程碑。这是高效使用 Claude Code 的核心节奏。

下节课我们讲记忆系统——让 Claude Code 真正"认识"你和你的项目。

用 Claude Code 构建,用 VitePress 驱动