Claude Code 检查点回溯与 Git 自动存档最佳实践
在 Vibe Coding 流程中解决代码修改失控和审计需求的方案。通过对比 Claude 原生检查点与 Git 回滚的机制差异,阐述了前者能同步 AI 记忆而后者仅回滚文件的特点。同时提供了基于 Stop 钩子的 Shell 脚本配置方法,实现每轮对话后自动提交至独立分支,确保代码变更可追溯且不影响主分支稳定性。

在 Vibe Coding 流程中解决代码修改失控和审计需求的方案。通过对比 Claude 原生检查点与 Git 回滚的机制差异,阐述了前者能同步 AI 记忆而后者仅回滚文件的特点。同时提供了基于 Stop 钩子的 Shell 脚本配置方法,实现每轮对话后自动提交至独立分支,确保代码变更可追溯且不影响主分支稳定性。

在 Vibe Coding 过程中,经常遇到这样的场景:
针对这两个需求,可以结合使用 Claude Checkpointing(原生检查点)与 Git 自动化钩子。
版本:claude code: 2.0.75
| 检查点 | Git | |
|---|---|---|
| 主要用途 | 实验与纠错。\n'Claude 你刚才改乱了,回到两分钟前重新试一次。' | 存档与日志。\n'我完成了这部分功能,先存个档,以防万一。' |
| 回滚范围 | 文件 + AI 记忆 (Context Window) | 仅 文件 (Filesystem) |
| 持久性 | 临时。通常随会话结束或时间推移被清理 | 永久。保存在 .git 历史中,随时可以找回。 |
| 可读性 | 较差。主要用于机器回滚,用户很难直观看到差异 | 极佳。可以通过 git log 或 GUI 工具查看详细 Diff。 |
| 外部访问 | 仅能在 Claude Code 终端内访问。 | 可以在 VS Code、GitHub、其他 IDE 中访问。 |
在 Claude Code 的配置文件 (~/.claude/settings.json) 中添加如下 Hook:
"hooks":{"Stop":[{"hooks":[{"command":"~/.claude/hooks/commit_per_turn.sh","type":"command"}],"matcher":""}]}
创建脚本并赋予执行权限 (
chmod +x commit_per_turn.sh)
#!/bin/bash
# --- 配置 ---
BRANCH_NAME="claude"
# ------------
# 1. 确保 Git 仓库存在
if ! git rev-parse --is-inside-work-tree > /dev/null 2>&1; then
echo "📦 初始化 Git 仓库..."
git init && git commit --allow-empty -m "Initial commit" > /dev/null 2>&1
fi
# 2. 检查是否有文件变动 (包括未追踪的文件)
if [ -z "$(git status --porcelain)" ]; then
# 没有文件变动,直接退出,不产生空提交
exit 0
fi
# 3. 确保在 claude 分支
CURRENT_BRANCH=$(git symbolic-ref --short HEAD 2>/dev/null)
if [ "$CURRENT_BRANCH" != "$BRANCH_NAME" ]; then
if git show-ref --verify --quiet refs/heads/$BRANCH_NAME; then
git checkout $BRANCH_NAME > /dev/null 2>&1
else
echo "🌱 创建 claude 分支..."
git checkout -b $BRANCH_NAME > /dev/null 2>&1
fi
fi
# 4. 添加所有文件
git add .
# 5. 生成概要总结 (关键步骤)
# 获取简短的统计信息,例如:" file1.py | 2 +- \n file2.js | 5 +++++"
# 处理输出变成单行:"file1.py (2), file2.js (5)"
SUMMARY=$(git diff --cached --stat --format=oneline | head -n -1 | awk '{print $1}' | paste -sd ", " -)
# 组合最终提交信息
COMMIT_MSG=
[ -gt 150 ];
COMMIT_MSG=
git commit -m > /dev/null 2>&1
关于 .gitignore:由于脚本执行的是 git add .,请务必确保你的项目根目录下有配置良好的 .gitignore 文件,防止 node_modules / 虚拟环境 等临时文件被意外提交

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online