⌨️ 第六章 Web技术与安全
📄 本篇一句话

版本管理=给代码装时光机;Subversion 是集中式老派(一台服务器管账),Git 是分布式新派(人人本地全套账本),GitHub 是给 Git 加社交与协作的云平台——2026 年,Git 已经是唯一答案,但对比 SVN 才懂它强在哪。

📝 在本章的位置

上游:5-9/5-10 的 DevOps 流水线第一站就是提交代码;6-15 的 GitHub API 只是其一。本机 git --version 就有 2.55——学完立刻能上手。

一、为什么需要时光机

没有版本管理的世界:论文最终版.docx、论文最终版2.docx、论文最终版打死不改版.docx……程序员版:backup_0301.tar.gz。版本管理系统(VCS)三件承诺: - 历史:任何时刻可回滚(后悔药); - 差异:谁哪天改了哪行,一目了然(追责/复盘); - 协作:多人同时改,系统帮你合并。

二、Subversion(SVN):集中式时代

SVN(2000)=一台中央服务器是唯一账本,开发者检出(checkout)工作副本、改完提交(commit)回中央:

三、Git:分布式时代

Git(2005,Linus 两周写出)=每人本地都是全套仓库(含全部历史),中央仓库只是「大家同步的那一份」:

维度 SVN Git
账本 中央一份 人人一份
断网提交 ✗ ✓
分支成本 目录复制(贵) 指针(几乎零)
单点故障 有 无(任意克隆都是备份)

四、GitHub:Git + 协作平台

GitHub(2008)不是 Git——是托管 Git 仓库并叠加协作功能的云平台: - Pull Request:我的改动请你审查(5-3 的评审环节产品化)——开源协作的标准动作; - Issues/Actions/Wiki:问题跟踪、CI/CD(5-10 的 GitHub Actions)、文档一站化; - 规模(2025 Octoverse):1.8 亿+ 开发者账号;TypeScript 已是月度贡献者第一的语言——世界最大的代码城。 - 同类:GitLab(自托管强)、Gitee(国内速度快)。

动手 Demo:亲手建一个时光机

# 逐行执行(Windows 自带 git 2.55)
mkdir demo_git && cd demo_git
git init                          # ① 初始化仓库:出现 .git 目录(账本本体)
echo "第一章 初稿" > book.txt
git add book.txt                  # ② 暂存:宣告这个文件的改动要记账
git commit -m "第一章"            # ③ 提交:拍一个快照
echo "第二章 续写" >> book.txt
git diff                          # ④ 看未暂存的差异:+第二章 续写
git add . && git commit -m "第二章"
git log --oneline                 # ⑤ 历史一览:两个快照
git checkout HEAD~1 -- book.txt   # ⑥ 时光倒流:拿回上一版的文件
cat book.txt                      # 只剩第一章 —— 后悔药到手
git checkout HEAD -- book.txt     # ⑦ 再回来

看到什么算成功:git log 列出两次提交(各带哈希与信息);第⑥步后文件真回到第一章——历史与回滚亲眼验证。

读结果:add(暂存)与 commit(快照)两段式是 Git 的核心节奏;每次 commit 的哈希(如 a3f9c2e)就是那台时光机的坐标。

30 秒实验

在任意 Git 仓库(比如本 vault 若是仓库,或上面 demo)跑 git log --oneline | head -5 与 git branch -a——看看历史深度与分支数量。开源大仓库(如用 6-15 的 API 查 CPython)分支常以百计——「分支便宜到随手开」不是修辞。

常见误区

自测三问(点击展开) 1. **SVN 与 Git 最本质的架构差别?** 答:SVN 集中式(历史只在中央服务器);Git 分布式(每人本地全套历史)。 2. **Git 的快照模型强在哪?** 答:存整项目快照+未变文件复用指针——快、省、分支几乎零成本。 3. **GitHub 的 PR 解决协作中的什么问题?** 答:改动审查与讨论——合并前让他人把关,质量与知识共享双收。

相关笔记