1.8
第一章 · 第 8 节

存档与后悔药:Git

这一节你会拿到

你会让 Agent 给项目存"检查点",并且学会两种后悔药:还没存就改坏了怎么撤、已经存了一个坏版本怎么退回更早的好版本。

回头一题

这道题不考这一节,考前面学过的。想不起来就回去翻一眼再答——记不住的东西,真用的时候一样会卡。

Steve 的站有 12 个页面,每页都各自抄了一份页脚。换个电话号码,麻烦在哪?

程序员敢放开手改代码,靠的就是 Git。命令让 Agent 去敲,你只要弄懂几个关键步骤,出事的时候知道该跟它说哪句话。

下一节 1.9 要把你做好的 Steve's Repair 网站整个迁到新框架,改动很大,迁移过程中很可能会出现错误。动手前先把安全网装好:存一个干净的检查点,真迁坏了能退回来。

Git 就像游戏存档

每存一次,就留下一张"当时一切正常"的快照。后面手滑改坏了,随时能回到任意一个存档点,之前的进度一点不丢。

第一次需要先开启存档功能:git init

操作 · 对 Agent 说 —"帮我给这个项目开启 Git 存档(git init),然后存一个干净的检查点。"

它会先 git init,再存第一个检查点。

第一次提交,Git 要你先报个名

如果这台电脑没用过 Git,存第一个检查点时它会让你先设用户名和邮箱,不然不给存。这是正常流程。对你的 Agent 说:"帮我仅在当前仓库配置本地 Git 身份,用户名写你的称呼,邮箱随便填一个。" Agent 会执行 git config --local user.namegit config --local user.email,只在这个项目里生效,不动你系统的全局设置。配好就能接着存了。

在哪儿跟 Agent 说?两个地方都行,挑你顺手的:

关键是:你得在项目文件夹里跟它说,它才知道要给哪个项目开启存档。Agent 把网站文件落在哪个文件夹、怎么确认自己在对的位置,见 1.4

四个动作

Git 命令很多,这门课你认得四个就够,全让 Agent 帮你敲:

不用背命令

说人话就行,比如"帮我存一个检查点,说明写'首页做好了'",或"我改坏了,帮我退回上一个检查点"。认得这四个命令,是为了看懂 Agent 在做什么、它做错了你能看出来、能拦住。

完整演示:你下指令,Agent 执行存档,你在日志中确认结果

下面是一段真实会发生的对话和终端输出(仿终端示意,不是真画面)。你说一句话,Agent 替你敲 git addgit commit,最后用 git log 把检查点列出来,你能在里面找到刚存的这一条。

你的项目 终端
# 你对 Agent 说:帮我存一个检查点,说明写"首页做好了" Agent 替你敲了下面两条命令: $ git add . $ git commit -m "首页做好了" [main 9f3a1c7] 首页做好了 3 files changed, 48 insertions(+) 你说:让我看看存过哪些检查点 $ git log --oneline 9f3a1c7 首页做好了 # 刚存的这条,排在最上面 2b8d4e0 加了联系方式区块 a17c9f2 初始版本 # 最早那个干净起点

这张图看明白,Git 最要紧的部分你就有了:

编号不用记、也不用抄

真要退的时候,把 git log 的内容复制下来发给 Agent,或者直接说"退到'初始版本'那个检查点",它自己能找到编号。你只需要会看 log、能指出哪行是好版本

两种后悔药,对应两种改坏

"改坏了"其实分两种,救法不一样。这一节最要紧的就是这段,下一节迁框架会用到第二种。

情况 A · 还没存就坏了

改了一堆,还没 commit,发现越改越糟

你或 Agent 刚改了文件,还没存检查点,现在想把这些改动全部丢掉,回到上一个检查点那个干净样子。

这次改动我不要了,帮我撤回到上一个检查点。

Agent 敲的是:

git restore .

文件立刻变回上一个检查点的样子,刚才那些乱改全没了。

情况 B · 已经存了坏版本

已经 commit 了,过后才发现这个版本是坏的

坏改动已经被存成一个检查点了(比如迁框架中途存了一次,后来才发现整个迁移都是错的)。这时 git restore 不够,要退回到更早的某个好检查点。

现在这版迁坏了,帮我退回到"初始版本"那个检查点。

Agent 会先看 git log 找到那个好检查点,再把项目退回去。你只要在 log 里指对哪行是好版本

迁移框架时出现问题,几乎都属于情况 B。

因为迁移过程里会存好几次档,等你发现不对,坏版本早被存进去了。所以下一节动手前,先按上面 git init 那段,存一个干净的"初始版本"检查点。这个干净点就是你 B 路线要退回的目的地。没有它,翻车了就没地方退。

动手练习:把两种情况判断对

不用真敲命令。下面三个小场景,你判断每个该用哪种后悔药。考的是"碰上这情况我该说哪句话"——真用 Git 时,你要做的判断也就这一个。

场景一:你让 Agent 改了导航栏,还没让它存检查点,一看改得乱七八糟,想全部撤掉。该怎么办?

场景二:Agent 迁框架,中途存过两次检查点,现在整站全乱、那两个检查点也都是坏的。你想回到迁移之前那个好版本。这是哪种情况?

场景三:你要回退到某个检查点,但拿不准 git log 里哪一行才是"还正常"的版本。最稳的做法是?

把回退顺序排对

情况 B 退回旧版本,Agent 内部是按固定顺序走的。下面四步打乱了,按正确先后点选。点错会提示,点对会标上序号。

把"退回一个旧检查点"的四步排成正确顺序:

先点你认为的第一步。

自检:对着你真实的项目核对

下面几条,对着你自己电脑上那个项目诚实地勾。这一节不光要看懂,迁框架之前你得真的有一个干净检查点垫底。

还差几项就齐了。

报错了?这三种最常见

带走这一节

开启存档靠 git init(一次),存检查点靠 git add + git commit,翻账本靠 git log。改坏了分两种:没存过用 git restore 撤回(A),存过坏版本就退回一个旧检查点(B)。四条命令都交给 Agent,你只管会看、会说、指对版本。下一节迁框架,先存干净点,放手让它改。

不知道怎么让 Agent 开启 Git、看不懂 git log 哪行是好版本、或者担心"退回去会丢东西"?把你的 git log 输出和当前情况写清楚,发到群里问问大家,或者直接向 Abel 或助教提问。

答对了!