Phase 1 · 第 1.8 节 · 主资源:Git 官方文档

存档与后悔药:Git

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

Git 就是让程序员能够放心修改代码的基础保障。命令交由 Agent 执行,你只需理解关键步骤,知道在出现问题时应向 Agent 下达何种指令即可。

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

Git 就像游戏存档:每存一次,就留下一个"当时一切正常"的快照。后续操作失误后,可以随时回到任意一个存档点,前面的进度不会丢失。

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

▸ 操作:对 Agent 说 —"帮我给这个项目开启 Git 存档(git init),然后存一个干净的检查点。"它会先 git init,再存第一个检查点。
Git 首次提交需要配置身份标识。如果你的电脑此前未使用过 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 或助教提问。

课程术语表 上一节:为什么不一直用 HTML 下一节:认识框架 参考卡:Git 最小命令 深入:Git 官方文档