Vibe Tutorial
Git 版本控制与跨平台协作

10.1 Git数据流向

Tip

每一个 Git Commit,都是你为了防止世界毁灭而存的档。


1. 为什么要学这个?

你写代码时肯定遇到过:改乱了,想回到昨天下午 2 点的样子,也是不可能的。 你只能拼命按 Ctrl+Z,直到手抽筋。 甚至,你误删了一个文件,然后把回收站清空了...

Git 就是你的"时光机" + "后悔药"。但如果你不理解它的原理,这颗后悔药可能会变成毒药(比如误用 git reset --hard)。


2. 核心概念:三个平行宇宙

新手最大的困惑:我 add 了但没 commit,东西去哪了? 想象你在 淘宝购物

1. 工作区 (Workspace) = "商场货架"

  • 这就是你现在的项目文件夹。
  • 你在上面写写画画,随意修改。
  • 这里的任何改动,如果没有"拿起来",随时会被售货员(系统)清理掉。

2. 暂存区 (Staging Area) = "购物车"

  • 执行 git add
  • 你把商品从货架上拿下来,放进了购物车。
  • 你可以随时把不满意的商品拿出来 (restore),这还没扣款。

3. 本地仓库 (Local Repository) = "支付成功的订单"

  • 执行 git commit
  • 结账! 生成了一张发票 (Commit ID)。
  • 这一刻,你的商品被永久封存。哪怕商场倒闭了(工作区全删了),你凭发票也能找回东西。

3. 适用场景 (WHEN)

  • git add: "这个文件我改好了,先放进篮子。"
  • git commit: "这一组功能(比如登录页面)全做完了,打包存个档。"
  • git push: "把我的存档同步到云端备份。"

4. 解决方案 (HOW)

购物流程图解

Git 命令 现实映射 状态 潜台词
写代码 逛货架 Untracked / Modified "随便看看"
git add 放入购物车 Staged "这个我要了"
git commit 结账开发票 Committed "老板,买单!"
git push 快递寄回老家 Remote "云端备份"

数据流向图

graph TD
    WS["工作区 (货架)"] -->|"Step 1: git add"| Stage["暂存区 (购物车)"]
    Stage -->|"Step 2: git commit"| Repo["本地仓库 (已付款)"]
    Repo -->|"Step 3: git push"| Remote["远程GitHub (云端)"]
    
    Repo --"我想退货 (reset)"--> Stage
    Stage --"放回货架 (restore)"--> WS
    
    style WS fill:#fff9c4,stroke:#fbc02d
    style Stage fill:#e1bee7,stroke:#8e24aa
    style Repo fill:#c8e6c9,stroke:#2e7d32
    style Remote fill:#bbdefb,stroke:#1565c0

5. 真实案例

Story

《玩具总动员 2》的惊魂 24 小时

1998 年,皮克斯在制作《玩具总动员 2》。 一位员工在清理文件时,误输入了 rm -rf * (Linux 下的删库跑路命令)。 眼看着屏幕上的文件一个个消失,伍迪和巴斯光年正在被抹除。 更绝望的是,公司的备份服务器恰好坏了,没有人知道。 电影差点因此夭折。

谁拯救了世界? 技术总监 Galyn Susman。她刚生完孩子,为了照顾宝宝,她在家里装了一套工作站办公。 她的电脑里,刚好有 2 周前同步 (Pull) 下来的完整仓库。 她的这台个人电脑,成为了这部电影的"诺亚方舟"。

Vibe 心法:Git 是分布式的。这意味着每个人电脑里都有一份完整的历史备份。只要有一个人的电脑还在,代码就不会死。这就是为什么我们强推 Git 而不是传统的集中式 SVN。


6. 本章小结

  1. 购物车原则add 是挑选,commit 是买单。
  2. 原子性:不要把 10 个无关的功能一次性买单(commit),万一要退货(回退)你会哭的。
  3. 分布式:你的电脑就是备份中心,多 push,多 pull