Git 就是让程序员能够放心修改代码的基础保障。命令交由 Agent 执行,你只需理解关键步骤,知道在出现问题时应向 Agent 下达何种指令即可。
下一节 1.9 要把你做好的 Steve's Repair 网站整个迁到新框架,改动很大,迁移过程中很可能会出现错误。动手前先把安全网装好:存一个干净的检查点,真迁坏了能退回来。
git init,再存第一个检查点。git config --local user.name 与 git config --local user.email,仅在此项目内生效,不修改系统全局配置。配置完成后即可继续提交。在哪里对 Agent 说?两处均可,选择你习惯的:
关键是:你得在项目文件夹里跟它说,它才知道要给哪个项目开启存档。Agent 把网站文件落在哪个文件夹、怎么确认自己在对的位置,见 1.4。
Git 命令很多,这门课你认得四个就够,全让 Agent 帮你敲:
git add:把本次改动标记为待存档状态。git commit:存一个检查点,写一句说明,比如"做好了首页"。一个检查点会有一个编号(一串字母数字),回退时要用它。git log:翻看存过的所有检查点,从新到旧排着,每个都带编号和那句说明。git restore:把还没存档的改动撤掉,文件恢复成上一个检查点的样子。下面是一段真实会发生的对话和终端输出(仿终端示意,不是真画面)。你说一句话,Agent 替你敲 git add 和 git commit,最后用 git log 把检查点列出来,你能在里面找到刚存的这一条。
读懂这张图,你就掌握了 Git 的核心要点:
9f3a1c7 首页做好了 就是你刚存的检查点。前面那串 9f3a1c7 是它的编号,后面是你写的那句说明。a17c9f2 初始版本 是最早的干净起点。git log 的内容复制下来发给 Agent,或者直接说"退到'初始版本'那个检查点",它自己能找到编号。你只需要会看 log、能指出哪行是好版本。"改坏了"其实分两种情况,救法不一样。这是本节最需要掌握的核心内容,下一节迁移框架时将会用到第二种情况。
你或 Agent 刚改了文件,还没存检查点,现在想将这些改动全部撤销,回到上一个检查点干净的样子。
Agent 敲的是:
文件立刻变回上一个检查点的样子,刚才的误改即被全部撤销。
坏改动已经被存成一个检查点了(例如迁移框架中途提交了一次检查点,后续发现整个迁移出现了错误)。这时 git restore 不够,要退回到更早的某个好检查点。
Agent 会先看 git log 找到那个好检查点,再把项目退回去。你只要在 log 里指对哪行是好版本。
git init 那段,存一个干净的"初始版本"检查点。这个干净点就是你 B 路线要退回的目的地。没有它,翻车了就没地方退。无需实际输入命令。下面三个小场景,你判断每个该用哪种后悔药。考的是"遇到这种情况我该说哪句话",这正是你真用 Git 时唯一要做的判断。
场景一:你让 Agent 改了导航栏,还没让它存检查点,一看改得乱七八糟,想全部撤掉。该怎么办?
场景二:Agent 迁框架,中途存过两次检查点,现在整站全乱、那两个检查点也都是坏的。你想回到迁移之前那个好版本。这是哪种情况?
场景三:你要回退到某个检查点,但拿不准 git log 里哪一行才是"还正常"的版本。最稳的做法是?
情况 B 退回旧版本,Agent 内部是按固定顺序走的。下面四步打乱了,按正确先后点选。点错会提示,点对会标上序号。
把"退回一个旧检查点"的四步排成正确顺序:
先点你认为的第一步。
下面几条,对着你自己电脑上那个项目诚实地勾。这一节不光要看懂,迁框架之前你得真的有一个干净检查点垫底。
git log,在列表里看到了刚存的那条,认得出哪行是它。还差几项就齐了。
git init,先让它开启 Git 再存档。git log 一片空、说"没有任何提交":你还没存过任何检查点,先让 Agent 存一个,log 里就会出现了。git init(一次),存检查点靠 git add + git commit,翻账本靠 git log。改坏了分两种:没存过用 git restore 撤回(A),存过坏版本就退回一个旧检查点(B)。四条命令都交给 Agent,你只管会看、会说、指对版本。下一节迁框架,先存干净点,放手让它改。不知道怎么让 Agent 开启 Git、看不懂 git log 哪行是好版本、或者担心"退回去会丢东西"?将你的 git log 输出内容和当前情况文字描述发到群里问问大家,或者直接向 Abel 或助教提问。