⏳ 第十三课:Git 版本管理 — 代码的"时间机器"

前十二课你写了多少代码?回想一下:主页改了又改、音乐播放器坏了又修……每次大改动前,你是不是都靠手动复制文件夹留后路?(你的主页还有两处副本在「我的网站」和「基础入门」——那就是"手动存档"。)

手动副本(现在的你)Git(今天的你)
复制整个文件夹,起名"主页2""主页3""最终版""真·最终版"一条命令存档,自动记日期、记谁改的、记改了什么
改坏了想回去?只能找旧副本,还分不清哪个是哪个随时"读档"回到任何一次存档
文件夹越堆越多,占硬盘还乱一个文件夹里装着全部历史,清爽

🎮 总比喻:Git 就是打游戏的存档系统。平时打 boss 前存档,打输了读档重来——Git 给代码干的就是这件事。
⏳ 所以本课标题叫"时间机器":改坏了?坐时光机回去。想看看上周的代码长啥样?翻存档。

✅ 好消息:你的电脑已经装好 Git 了(版本 2.55),本课直接开练。而且本课不依赖第十二课,全新的一条线,放心学。

🛒 2. 先认三个"地方":一条流水线

Git 的世界里有三个地方,你的文件在它们之间流动(标序号):

工作区 —— 就是你平时干活的文件夹,改了没存档的文件都在这
               ↓  git add(放进购物车)
暂存区 —— 购物车:待会要存档的文件先在这排队
               ↓  git commit(结账入库)
仓库 —— 存档库:每一次 commit 都是一个"存档点",永远可读档
序号地方比喻怎么进出
工作区超市货架(随便拿、随便改)你的文件夹
暂存区购物车(挑好的放进来,还没付钱)git add 放进
仓库收货仓(付钱结账,正式存档)git commit 结账
📌 为什么要分两步(add 再 commit)?超市为什么不直接拿一件结一件?因为你可以挑几件一起结账。同理:改了好几个文件,想打包成"一个存档"再 commit——add 就是挑东西,commit 才是结账。改一个小 bug 单独存一次,改一个大功能整体存一次,历史清清楚楚。

🏪 3. 第一步:开店(init + 署名前只做一次)

在正式开练前,先造一个练习文件夹(别拿主页练手!):

# 在文件夹里右键 → Git Bash Here(或者让 Claude 帮你开)
mkdir git练习 && cd git练习

然后三个动作(标序号):

// ① 报到:告诉 Git"这台电脑是我在操作"(一辈子一次,署进每个存档)
git config --global user.name "ycx123"
git config --global user.email "13637729175@163.com" /* 跟 GitHub 注册邮箱一致 */

// ② 开店:把当前文件夹变成 Git 仓库(一个文件夹只开一次店)
git init
序号命令说明
git config --global user.name/email给自己署名。每个存档都会盖上"谁存的"——就像快递单上的寄件人。不署名,commit 会罢工
git init在文件夹里开店(生成一个隐藏的 .git 档案室)。比喻:租下店面,货架就位,历史从今天开始记
📌 怎么开 Git 终端?进到目标文件夹 → 地址栏输入 cmd 回车,或者文件夹空白处右键 → Git Bash Here。你平时跟 Claude 对话的那个窗口其实也是 Git Bash,直接在那敲也行。

💾 4. 第二步:存档三连(status → add → commit)

在练习文件夹里建一个文件,比如 test.txt,里面随便写点字。然后每次存档的固定流程(标序号):

// ① 查账:看看哪些文件改了、哪些还没进购物车(红色=没进)
git status

// ② 进货:把改动的文件全放进购物车(. 点 = 当前文件夹全部)
git add .

// ③ 结账:正式存档!-m 后面写这次的存档说明(就像写日记标题)
git commit -m "第一次存档:新建 test.txt"

// ④ 翻账本:看所有存档记录
git log
序号命令比喻
git status查购物小票:改了啥、买了啥,一目了然(最常用的命令,没事就敲它)
git add .把文件全放进购物车。. 是"当前文件夹里所有改动"——比一个个点名省事
git commit -m "说明"结账存档。-m 后必须带说明,一句话讲清这次改了啥,将来翻历史全靠它
git log翻账本:每个存档的时间、署名、说明,还有一长串"存档编号"
✨ 本课最值钱的一句话:养成习惯——改一轮代码,存一次档
就像打游戏:每过一个 boss 存一次。改坏了大不了读档重来,天塌不下来。这就是"从容改代码"的秘密。

💊 5. 第三步:后悔药(读档 + 放弃改动)

时间机器来了,两种后悔场景(标序号):

// ① 刚改坏,还没 commit(还没存档)→ 放弃这次改动,回到上次存档的样子
git checkout -- test.txt  /* 文件名可以换,或 . 全部 */

// ② 想看某个旧存档的代码 → 先用 git log 找到编号,再穿越
git checkout 存档编号前6位  /* 看够了敲 git checkout main 回到现在 */
场景命令比喻
① 改坏了还没存git checkout -- 文件名Ctrl+Z 的高级版:Ctrl+Z 只能回到几分钟前,它直接回到上次存档(注意:没存过的改动会丢,慎用)
② 回看旧版本git log 找编号 → git checkout 编号坐时光机回过去"参观",参观完敲 git checkout main 回现代
📌 存档编号:git log 里每行 commit 后面那串 40 位的字母数字就是编号(像身份证号)。用的时候写前 6 位就够了。你的每个存档都有唯一编号,所以永远丢不了。

🛠️ 6. 动手挑战(全部在 git练习 文件夹里做)

✏️ 四个挑战:

① 开店 + 首次存档(必做)
新建 git练习 文件夹 → git init → 建一个 test.txt 写几句话 → git add .git commit -m "第一次存档"
验收标准:git log 能看到一条记录。

② 后悔药(必做)
故意把 test.txt 内容改得乱七八糟 → 执行 git checkout -- test.txt → 打开文件,内容恢复成存档时的样子了吗?

③ 第二次存档 + 翻账本(必做)
再往 test.txt 里加几行字 → git add . + git commit -m "第二次存档"git log 应该看到两条记录,编号还不一样。

④ 云端备份:GitHub 上场 🐙(必做,第九课注册的账号正式开工)
打开 github.com 登录(用户名 ycx123)→ 右上角 New repository 建一个空仓库,名字就叫 git练习别勾"Add a README"(保持全空)→ 建好后复制它给你的那两条命令,在 git练习 文件夹里执行(大概长这样):
git remote add origin https://github.com/ycx123/git练习.git
git push -u origin main
⚠️ 如果 push 时弹出登录窗口/要 token:用浏览器授权登录即可。成功后刷新 GitHub 网页——你的文件上云了!
云端存档的意义:电脑硬盘坏了都不怕,代码在 GitHub 上。以后每次 commit 完敲 git push 就同步上云(这将成为你以后的日常动作)。

老规矩:卡住就把 Git Bash 里的报错原文发给 Claude。Git 常见的坑:① commit 前忘了 config 署名(报错会提示你是谁)② 中文文件夹路径在部分终端抽风(报错乱码就换英文名文件夹)③ push 前仓库不是空的(远程有 README 会冲突,建仓库时别勾)。

📋 7. 今日总结

命令一句话
git init开店:文件夹变成仓库
git status查账:看有什么改动(最常敲)
git add .进货:改动放进购物车
git commit -m "说明"结账:正式存档
git log翻账本:看存档历史 + 编号
git checkout -- 文件后悔药:放弃未存档的改动
git push上云:存档同步到 GitHub
🎉 学完这一课:你拥有了代码的"时间机器 + 云端保险柜"。
以后你的工作流就升级成:改代码 → git add . → git commit -m "说明" → git push
再也不用手动复制"主页最终版2"了——历史全在 Git 里,随时可回。

✅ 下一步?

第十四课(预告)把 Git 用回真项目:给 my-site 开店、天天存档上云——从"会敲命令"到"养成习惯"

先做挑战,做完喊我检查!🚀