主题
第 8 章 Git 与 GitHub · 时间机器与云存档
两个古老的噩梦,改崩了回不去,和两个人同时改互相覆盖。Git 就是为此发明的,一台给代码用的时间机器。
打游戏你就懂了。commit(提交)是存档点,每个存档附一句话,说明这次改了什么。branch(分支)是开一个平行存档去试危险打法,主线不受影响。试成了,merge(合并)回主线。试崩了,整条分支扔掉,无事发生。想回到任何一个存档点,随时可以。
GitHub 则是云存档加联机大厅,把你的 Git 仓库(repository,简称 repo)放到云上。Git 是工具,GitHub 是网站,关系就像邮件和 Gmail。push 是把本地存档传上云,pull 是把云上的新存档拉下来,clone 是把整个仓库原样抄一份到新电脑。多人协作时你还会见到 PR(Pull Request),意思是"我改好了一版,请你看过再合并",AI 帮你改代码时走的也常是这个流程。
现在你明白 Claude Code 为什么老在 commit 了。AI 也需要存档点。它每完成一小步就存一次档,一旦搞砸,回滚就行。经历过改坏了却回不去的人(比如我们),会真心爱上这个设计。
平时你只需要三招傍身。git status,我现在改了哪些还没存档。git log --oneline,存档历史一览。git diff,这次到底改了什么。让 AI 帮你回滚时,你能看懂它在做什么,用不着闭着眼睛祈祷。
关键领悟
commit 越勤,胆子可以越大。没有版本控制的实验是赌博,有版本控制的实验才是科学。
试一试
在我们任意一个项目里跑 git log --oneline,读读最近二十条存档说明,那就是这个项目的编年史。