Vibe Tutorial
功能测试流程与自动化脚本

8.10 检查点与回退

Tip

真正的勇士,从不回头看爆炸。但聪明的工程师,永远会留一条回头的路。


1. 为什么要学这个?

周五下午 5 点,你上线了一个新功能。 5 点 10 分,老板冲进来说:“所有用户都登不上了!赶紧撤回!” 此时你的大脑一片空白:删哪行代码?怎么重新打包?数据库怎么办?

如果你没有提前设置好“检查点” (Checkpoints),这一刻就是你的噩梦。 学会本章,你将拥有时光机:无论发生什么灾难,你都能在 30 秒内让世界回到和平的样子。


2. 核心概念:Checkpoints (时光机存档)

1. Git Tag (代码的里程碑)

每一个 Commit 只是游戏里的自动存档。 而 Tag 是你在打 Boss 前手动存的那个关键存档

  • v1.0.0: 这是一个稳定的版本。
  • v1.0.1: 这是一个修复了 Bug 的版本。

2. Git Revert (安全的后悔药)

很多人出事了喜欢用 git reset (重置时间线)。这对多人协作是毁灭性的。 Git Revert 是生成一个新的提交,用来抵消上一次的错误。历史记录还在,但错误被修正了。


3. 解决方案 (HOW)

场景一:发版前的仪式 (打 Tag)

不要在那瞎提交。每次上线前,必须以此为誓:

# 1. 确认测试通过
npm run test

# 2. 打上标签 (就像给时间打个结)
git tag v2.0.0

# 3. 推送到云端
git push origin v2.0.0

场景二:出事后的急救 (Vercel 回滚)

如果你是用 Vercel 托管,甚至不需要敲代码。

  1. 打开 Vercel Dashboard -> Deployments。
  2. 找到上一个绿色 (Ready) 的部署记录。
  3. 点击 "Instant Rollback" (瞬间回滚)
  4. 30 秒内,你的网站流量就会被切回旧版本。

场景三:代码层面的撤销 (Git Revert)

# 1. 找到那个闯祸的 Commit ID (比如 a1b2c3d)
git log

# 2.不仅不删它,反而生成一个反向补丁
git revert a1b2c3d

# 3. 推送这个“修正”
git push

4. 真实案例

Story

GitLab 的 300GB 删库惨案 (2017)

2017 年,一位 GitLab 工程师意外执行了 rm -rf,删除了 300GB 的生产数据库。 最绝望的时刻: 他们试图恢复备份,却发现:

  1. 数据库快照 (Snapshots) 是空的。
  2. 磁盘镜像 (Disk Images) 不可读。
  3. 常规备份脚本早在几个月前就报错了,但没人看。

Vibe 心法

  1. 没有被还原测试过的备份,等于没有备份。
  2. 回滚能力 (Rollback Capability) 是比新功能更重要的功能。上线前先问自己:如果这就炸了,我怎么在 1 分钟内救回来?

5. 本章小结

  1. 打 Tag:这是给你的代码买的保险。
  2. 用 Revert:永远向前修正,不要抹除历史。
  3. 常演练:如果你从来没试过从备份中恢复,那你其实是在裸奔。