Claude Code: 检查点与回滚

最后更新:2026-08-31

检查点是 Claude Code 的安全网——每次关键操作前自动保存快照,出问题随时回滚。

💡 提示:检查点不只是 git commit——它是 Claude Code 会话粒度的快照,记录了每一步操作的状态,可以精确回滚到任意步骤。

📋 前置知识:第十九章 CLI 参考手册

1. 你将学到


2. 检查点机制

(1) 工作原理

100%
graph LR
    A[会话开始] --> B[检查点1]
    B --> C[操作1]
    C --> D[检查点2]
    D --> E[操作2]
    E --> F[检查点3]
    F --> G[操作3]
    G --> H[当前状态]
    H -->|回滚| D
触发条件 自动创建 说明
会话开始 记录初始状态
修改文件前 记录修改前状态
执行命令前 记录命令前状态
手动请求 /checkpoint

(2) 检查点内容

TEXT 📖 仅展示
检查点 #3
  时间: 2026-08-28 14:30:15
  操作: 修改 src/auth/jwt.ts
  变更:
    - src/auth/jwt.ts (+12 -3)
    - src/middleware/auth.ts (+5 -1)
  文件快照: 保存了修改前的完整内容

▶ 示例 1: 查看检查点列表

TEXT 📖 仅展示
> /checkpoints

检查点列表:
  #1 [14:20:00] 会话开始 | 0 files changed
  #2 [14:22:15] 修改 jwt.ts | 2 files changed
  #3 [14:25:30] 修改 auth.ts | 1 file changed
  #4 [14:30:15] 添加测试 | 3 files changed
  #5 [14:35:00] 当前状态 | 6 files changed

3. 手动检查点

(1) 创建检查点

TEXT 📖 仅展示
# 手动创建检查点
> /checkpoint

# 带描述的检查点
> /checkpoint "完成用户认证重构"

(2) 最佳实践

时机 原因
大修改前 重构、迁移等高风险操作
阶段性完成 一个功能点完成时
不确定的操作 尝试性修改前
离开前 保存当前进度

▶ 示例 2: 大修改前创建检查点

TEXT 📖 仅展示
> /checkpoint "迁移前状态"
✅ 检查点 #6 已创建

> 将认证从 Session 迁移到 JWT

Claude Code:
  → Modifying 12 files...
  → Running tests...
  ❌ 3 tests failed

# Alice 决定先回滚,换一种方式
> /rollback 6
✅ 已回滚到检查点 #6(迁移前状态)

4. 回滚操作

(1) 回滚方式

命令 说明
/rollback 回滚到上一个检查点
/rollback <n> 回滚到指定检查点
/undo 撤销最近一次操作
git checkout . 回滚所有未提交修改

(2) 回滚范围

TEXT 📖 仅展示
# 精确回滚:只撤销特定步骤
> /rollback 4
✅ 已回滚到检查点 #4
   撤销了: 添加测试 (3 files)

# 全部回滚:回到会话初始状态
> /rollback 1
✅ 已回滚到检查点 #1(会话开始)
   撤销了所有修改

▶ 示例 3: 分步回滚

TEXT 📖 仅展示
> /checkpoints

  #1 [14:20] 开始
  #2 [14:22] 添加 UserService
  #3 [14:25] 添加测试
  #4 [14:30] 重构 UserService(失败)
  #5 [14:35] 尝试修复(仍然失败)

# 只回滚失败的重构,保留成功的添加
> /rollback 3
✅ 已回滚到检查点 #3
   保留了: UserService + 测试
   撤销了: 重构 + 修复尝试

# 用另一种方式重构
> 用不同的方案重构 UserService

5. 检查点与 git

(1) 关系对比

维度 检查点 git
粒度 操作级 commit 级
持久性 会话内 永久
存储 内存/临时 仓库
共享 不可共享 可推送
回滚 精确到步骤 精确到 commit

(2) 协同使用策略

TEXT 📖 仅展示
# 最佳实践:检查点 + git 双保险

# 1. 会话开始前 git commit
git add -A && git commit -m "before: claude session"

# 2. 使用检查点进行会话内回滚
/checkpoint "阶段性完成"
/rollback 3

# 3. 会话结束后 git commit
git add -A && git commit -m "feat: user auth module"

# 4. 如果整个会话失败,git 回滚
git reset --hard HEAD~1

▶ 示例 4: 检查点与 git 协作

BASH
# Alice 的安全工作流

# 1. 开始前提交
git add -A && git commit -m "chore: before claude session"

# 2. 启动 Claude Code
claude

# 3. 创建检查点
/checkpoint "重构前"

# 4. 执行重构
> 重构认证模块

# 5a. 成功 → git commit
/commit "refactor: auth module"

# 5b. 失败 → 检查点回滚
/rollback 1

# 5c. 完全失败 → git 回滚
# Ctrl+D 退出
git reset --hard HEAD~1

6. 安全网策略

(1) 多层安全网

TEXT 📖 仅展示
层级1: /undo          — 撤销最近操作
层级2: /rollback      — 回滚到检查点
层级3: git checkout   — 回滚未提交修改
层级4: git reset      — 回滚到任意 commit
层级5: git reflog     — 找回丢失的 commit

(2) 项目级安全策略

MARKDOWN
<!-- CLAUDE.md -->
## 安全策略
- 每次会话前自动 git commit
- 大修改前创建检查点
- 修改超过 10 个文件时必须先 /checkpoint
- 敏感目录修改后立即 /checkpoint
- 不使用 --allow-full-auto(除非 CI)

❓ 常见问题

Q 检查点会保存多久?
A 仅在当前会话内有效。退出会话后检查点消失,但 git commit 永久保存。
Q 回滚会丢失所有进度吗?
A 不会。回滚到指定检查点只撤销该检查点之后的修改,之前的修改保留。
Q 检查点占多少空间?
A 检查点存储文件差异,不占太多空间。单个检查点通常几十 KB。
Q 能回滚单文件吗?
A 检查点回滚是整个步骤的回滚。单文件回滚用 git checkout -- <file>
Q /undo/rollback 有什么区别?
A /undo 只撤销最近一次操作,/rollback 可回滚到任意检查点。
Q 回滚后 Claude Code 还记得之前的对话吗?
A 对话历史保留,但文件状态已回滚。Claude Code 知道你做了什么、又回滚了什么。

📖 小节


📝 作业

  1. 基础题(难度⭐):在会话中创建检查点、执行修改、回滚,验证文件恢复原状。
  2. 进阶题(难度⭐⭐):执行 3 步修改,回滚到第 2 步,验证第 1 步的修改保留、第 3 步的修改被撤销。
  3. 挑战题(难度⭐⭐⭐):设计一个多层安全网策略,组合使用检查点和 git,确保任何操作都能恢复。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏