大家好,我是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