Think Deep,Work Lean

AI 改崩了别慌:一条命令 12 毫秒退回能跑的版本

Posted on By zack

大家好,我是Zack。

先说个新手最怕的场景。

你让 AI 帮你改一个小工具,改到第 3 步,页面打不开了,命令跑不起来了。

更糟的是:改之前那个能跑的版本,没了。你想退回去,但不知道怎么退。

很多人到这里就放弃了,觉得「我果然不适合编程」。

其实差的就是一个动作:每做完一步,存一版。这个动作花 3 秒,换来的是——不管 AI 把项目改得多烂,你随时能一键退回到任何一个「还能跑」的时刻。

今天就讲透这个动作:怎么存,怎么退,怎么看 AI 改了什么。

我先演示一遍翻车现场

光说不练没用,我现场造一个小项目,让 AI 把它改崩,再退回来给你看。

项目里就一个文件 calc.js,里面有个加法函数,能正常跑:

function add(a, b) { return a + b }
module.exports = { add }

现在 AI 改坏了它,运行直接报错:

TypeError: add is not a function

注意看这个报错:add 明明是个函数,它却说「add 不是函数」。这就是典型的「AI 改崩」——改的时候顺手把别的东西弄丢了。

要是没有存档,你现在的选择只有两个:让 AI 修(可能越修越烂),或者整个重做。

有存档,就是第三条路:退回去。

存一版:两条命令,3 秒

我在真实仓库里实测了,就是这么快:

git add -A
git commit -m "第1步:加法函数,能跑"

实测耗时:0.036 秒。

每条命令说人话:

  • git add -A:把项目里所有改动的文件都装进「待存档」清单。-A 就是 all,全部的意思。
  • git commit -m "...":正式存一版,引号里写这句备忘。我习惯写成「第几步 + 干了什么 + 能不能跑」,比如「第2步:加了乘法,能跑」。

什么时候存?标准就一条:每当功能跑通了,立刻存。

跑通 = 你亲眼看到页面正常、命令能出结果。没跑通不存,存一堆坏版本没有意义。

我在演示项目里存了两版。看看存档列表长什么样:

git log --oneline

输出(实测):

9ab93e6 第2步:加了乘法,能跑
ca6bb08 第1步:加法函数,能跑

每一行就是一个存档点。前面那串字符是编号,后面是你写的备忘。

改崩了:一条命令,12 毫秒退回

回到翻车现场。AI 把 calc.js 改崩了,怎么办?

第一步,先别急着退。看一眼 AI 这轮到底改了什么:

git diff --stat

输出(实测):

 calc.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

翻译一下:这个文件被改了 4 行(加 2 行删 2 行)。一眼就知道 AI 动的范围有多大,有没有碰过你不想让它碰的东西。

确认这轮改动就是祸源,退。整文件退回上一版:

git restore calc.js

实测耗时:0.012 秒。

restore 就是「恢复」的意思。这条命令把 calc.js 恢复到最近一次存档的状态,AI 改坏的部分全部消失。

退完立刻验证:重新跑一遍,输出 add(2,3) = 5,正常了。

从「发现崩了」到「回到能跑」,总耗时不到 1 秒。整个过程你的项目没有任何损伤,你甚至可以马上让 AI 换个思路重改。

三个你会立刻遇到的问题

问:文件名太长,或者忘了崩的是哪个文件,想整个项目全退?

git restore .

最后的点代表「当前整个项目」。一条命令,所有文件全部回到最近一次存档。

问:不想全退,只想退回更早的某一版?

用 git log --oneline 找到那版的编号(比如 ca6bb08),然后:

git restore --source ca6bb08 calc.js

意思是:把 calc.js 恢复成 ca6bb08 那一版的样子。编号换成你自己的。

问:git 是什么,我要先学它吗?

不用。今天这四条命令(add、commit、log、restore)就是 git 的 1% 功能,够你用到熟练为止。你不需要理解 git 的其他 99%,就像你不需要懂发动机也能开车。

前后对比

  不存档 每步存一版
AI 改崩后 干瞪眼,祈祷 AI 能修好 git restore 退回,0.012 秒
重来成本 整个项目重做 只损失最后一步,几分钟
敢不敢乱试 不敢,改坏一次伤一次 随便试,崩了就退
需要的知识 无解 4 条命令

最后那行才是重点:敢乱试,才是上手最快的方式。因为你试错的成本被压到了几秒钟,学习速度自然就上去了。

两条能带走的

一,存档的时机不是「每天存一次」,是「每跑通一步存一次」。跑通就是你的自动提醒,比任何闹钟都准。

二,退回之前先 git diff --stat 看一眼改了哪。AI 改坏的和 AI 只改了一半是两种问题,看清范围再决定退还是不退。

最后说个局限:这套方法只管「AI 改坏代码」这种问题。如果你改崩的是数据(比如删了线上数据库里的记录),存档救不了你,那个要在动手前单独备份。别把两者搞混。

你的项目现在存了几版?评论区报个数,顺便说说你被「改崩退不回去」坑过的经历。

公众号:Zack说AI