Skip to content

🎓 第一章:Git 简介 —— 时光机的说明书

什么是 Git?

同学们,想象一下你正在写一本小说。写到第 50 章的时候,你突然觉得第 3 章的结局才是对的,想改回去——但你已经改过 8 次了,根本记不清当时写了什么。

如果有一台"时光机",能让你在任意版本之间自由穿梭,那该多好?Git 就是代码世界的时光机。

Git 是一个分布式版本控制系统(Distributed Version Control System),由 Linux 之父 Linus Torvalds 在 2005 年创造。没错,就是那个创造 Linux 的大佬——据说他只花了大约 10 天就写出了 Git 的第一个版本。大佬的世界,我们不懂。

💡 提示: 通俗理解:Git 就是你代码的"存档系统"。游戏里你每过一关都会存档,Git 也一样——只不过它存的是你的代码,而且可以随时回到任何一个存档点。

为什么不用"复制文件夹"的方式管理版本?

我知道,你可能在想:我直接把文件夹复制一份,命名为 项目_v1项目_v2项目_最终版项目_最终版_真的最终项目_最终版_打死不改……

别笑,这事儿我当年真干过。结果呢?

  • 硬盘里堆满了 20 个几乎一样的文件夹,空间告急
  • 完全不记得哪个版本改了什么
  • 想合并两个版本的改动?手动来?别闹了
  • 和队友合作?互相发压缩包?想想就头大

Git 优雅地解决了这一切。

集中式 vs 分布式

在 Git 出现之前,主流的版本控制系统是集中式的,比如 SVN、CVS。它们的工作方式就像一个班级共用一本笔记:

text
📦 集中式版本控制 (如 SVN)

┌─────────────┐
│  中央服务器   │  ← 所有版本历史都在这里
└──────┬──────┘
       │ 网络
  ┌────┼────┐
  │    │    │
  ▼    ▼    ▼
 小明  小红  小刚   ← 每个人只有最新版本

问题很明显:服务器挂了 = 全班作业没了。网断了 = 没法干活。

text
🌐 分布式版本控制 (如 Git)

  ┌──────┐    ┌──────┐    ┌──────┐
  │ 小明  │    │ 小红  │    │ 小刚  │
  │(完整  │    │(完整  │    │(完整  │
  │ 历史) │←→ │ 历史) │←→ │ 历史) │
  └──────┘    └──────┘    └──────┘
  每个人都有完整的仓库!可以离线工作!

📝 备注: 记住这个关键区别:集中式只保存文件的"差异"(delta),而 Git 保存的是文件的"快照"(snapshot)。每次提交,Git 就像拍了一张照片,记录下当时所有文件的完整状态。虽然听起来更占空间,但 Git 很聪明——没有变化的文件,它只存一个指针,不会重复存储。

快照 vs 差异

对比项快照 (Git)差异 (SVN/CVS)
存储方式每次提交保存完整快照保存相对于上一版本的差异
查看历史版本直接取出,速度极快需要从头逐步还原
分支成本几乎为零(创建一个指针)需要复制整个目录
离线工作完全支持不支持
数据完整性SHA-1 哈希校验依赖服务器

Git 的设计哲学

理解了这些哲学,你会觉得 Git 的命令设计非常合理:

  • 完整性优先—— Git 用 SHA-1 哈希值来标识一切,任何改动都无所遁形
  • 只增不减—— Git 几乎从不删除数据,大多数操作只是添加新数据
  • 本地为王—— 绝大多数操作都在本地完成,速度快到飞起
  • 三态设计—— 已修改、已暂存、已提交(后面会详细讲)