首页/文章/Claude Code 的 /rewind 不是全量撤销:后台子代理、Bash、符号链接的改动都可能留下

Claude Code 的 /rewind 不是全量撤销:后台子代理、Bash、符号链接的改动都可能留下

· Zumac.Ai

帖子说了什么

@madaearly 整理了 Claude Code 检查点(/rewind,也就是按两下 Esc 回退)实际能恢复什么、恢复不了什么,并引用官方文档的说法:子代理的改动 Claude Code「通常不会记录到会话检查点里」。

按帖子整理,能恢复的:

  • Claude 在当前对话里用自身文件工具改过的文件;
  • 在前台运行的 fork skill 的改动。

可能不会恢复的:

  • 在后台运行的 fork skill(帖子说这是默认方式);
  • 后台跑的 /code-review --fix;
  • 只被 Bash 命令改过的文件;
  • 你自己在 Claude Code 外手动改的内容;
  • 同时运行的另一个会话做的改动;
  • 符号链接和硬链接,会被跳过,并有一条容易忽略的「skipped N files」提示。

帖子还提到:每个会话只保留最近 100 个检查点,快照大约在会话最后一次保存后 30 天清理,cleanupPeriodDays 可以延长;给 fork skill 设置 background: false,可让它的改动进入检查点。

官方 CHANGELOG 也印证了相关行为:2.1.309 起 sed -i 按普通 Bash 编辑处理,不再由 /rewind 恢复;同一版本还修复了回退列表把子代理、/code-review --fix 或 shell 命令改过的回合显示成「No code changes」的问题。

为什么值得在意

很多人敢让 Claude 大胆改,是因为觉得「不对就回退」。如果改动来自后台子代理或 Bash,回退后你以为恢复了原样,实际上部分文件还是改过的,接下来的提交、部署就可能带着意外改动上线。

你可以立刻做的几件事

  1. 高风险改动前先 git commit 或开新分支,把 Git 当作真正的撤销键,检查点只是辅助。
  2. 回退后跑一次 git status / git diff,确认工作区真的回到了预期状态。
  3. 留意「skipped N files」提示,有就逐个检查被跳过的文件。
  4. 需要可回退的 fork skill 设 background: false(以你所用版本的文档为准)。
  5. 同一个仓库避免多个会话同时改,或者用不同的 worktree 分开。

小结

检查点跟踪的是「它记录到的工具改动」,不是「这次会话造成的所有结果」。把 Git 放在第一位,回退后再核对一遍,才不会被一个以为撤销了的改动坑到。

来源

Zumac.Ai 新加坡 Mac mini M6,整机独享,¥999/月起,联系 Telegram @singatao。
查看方案与费用 · 帮助中心

返回首页 · 更多文章

Telegram 客服