快捷键
Esc + Esc(双击 Escape 键)
Rewind(回退)是 Claude Code 的撤销机制。当 Claude 的更改出了问题时,你可以快速恢复到之前的状态。
通过以下方式访问回退功能:
快捷键
Esc + Esc(双击 Escape 键)
命令
输入 /rewind 命令
两种方式都会打开一个可滚动的检查点列表。
从检查点列表中,你可以选择以下操作:
| 操作 | 效果 |
|---|---|
| 恢复代码和对话 | 将文件更改和对话都恢复到选定的时间点 |
| 仅恢复对话 | 保留当前代码,只回退对话 |
| 仅恢复代码 | 恢复文件更改,保留对话 |
| 从此处总结 | 压缩从选定点向后的对话(释放空间但不回退) |
当事情出错时,你有多层恢复选项。使用能解决问题的最轻量方式:
┌─────────────────────────────────────────────────────────┐│ 恢复阶梯 │├─────────────────────────────────────────────────────────┤│ ││ 第 3 层:Git 恢复(核选项) ││ ───────────────────────── ││ • git checkout -- <file> (丢弃未提交更改) ││ • git stash (保存以备后用) ││ • git reset --hard HEAD~1 (撤销最后一次提交) ││ • 适用于:手动编辑、多会话场景 ││ ││ 第 2 层:/rewind(会话内撤销) ││ ───────────────────── ││ • 回退 Claude 最近的文件更改 ││ • 仅在当前会话中有效 ││ • 不影响 git 提交 ││ • 适用于:错误的代码生成、方向偏差 ││ ││ 第 1 层:拒绝更改(内联) ││ ──────────────────── ││ • 在审查 diff 时按 'n' ││ • 更改从未被应用 ││ • 适用于:在问题发生之前拦截 ││ │└─────────────────────────────────────────────────────────┘| 场景 | 恢复层级 | 命令 |
|---|---|---|
| Claude 提出了错误代码 | 第 1 层 | 按 n 拒绝 |
| Claude 已做了更改,想要撤销 | 第 2 层 | /rewind |
| 更改已提交,需要完全回滚 | 第 3 层 | git reset |
| 实验性分支出了问题 | 第 3 层 | git checkout main |
| 上下文被污染,行为异常 | 重新开始 | /clear + 重新陈述目标 |
在执行有风险的操作之前:
你:在尝试这个实验性方案之前,让我们先提交当前的工作这会创建一个你随时可以返回的 git 检查点。
对于系统化的实验,使用检查点模式创建安全恢复点:
创建检查点
git stash push -u -m "checkpoint-before-refactor"# 保存所有更改,包括未跟踪的文件自由实验
恢复检查点
git stash list # 找到你的检查点git stash apply stash@{0} # 恢复但不删除# 或git stash pop stash@{0} # 恢复并删除可以创建 Stop 钩子在会话结束时自动创建检查点:
# 参见:examples/hooks/bash/auto-checkpoint.sh
# 会话结束时自动创建 git stash# 命名:claude-checkpoint-{branch}-{timestamp}# 日志:~/.claude/logs/checkpoints.log有风险的重构
检查点 -> 尝试 -> 提交或恢复
A/B 测试方案
检查点 -> 尝试 A -> 恢复 -> 尝试 B -> 比较
增量迁移
检查点 -> 迁移一部分 -> 测试 -> 重复
原型探索
检查点 -> 实验 -> 干净地丢弃
| 特性 | 检查点(git stash) | 分支 |
|---|---|---|
| 速度 | 更快 | 需要创建和切换 |
| 未提交更改 | 保留 | 需要先提交或 stash |
| 适用范围 | 快速实验 | 长期开发 |
| 跨文件 | 支持 | 支持 |