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

10.7 分支管理

Tip

在平行宇宙里杀人放火,不会影响主宇宙的和平。这就是分支的意义。


1. 为什么要学这个?

没有分支的团队是地狱。 你正在改登录页的 CSS,改了一半,页面乱七八糟。 突然老板说:"线上支付挂了,赶紧修!" 你怎么办?

  1. 提交烂代码? 线上登录页会炸。
  2. 删掉代码? 一早上的白干了。
  3. 不修? 公司倒闭。

分支 (Branch) 允许你随时开启一个"平行宇宙"。在那里,你可以把世界毁灭一万次,而主宇宙 (main) 依然岁月静好。


2. 核心概念:Feature Branch Workflow

宇宙法则

  1. main (主宇宙): 神圣不可侵犯。这里的代码永远是可运行的、绿色的。只有完全测试好的代码才能"合并"回来。
  2. feature/xxx (平行宇宙): 这是你的游乐场。比如 feature/login-page。你在里面删库跑路都没人管你。
  3. merge (世界线收束): 当你在平行宇宙修好了 Bug,你把它合并回主宇宙。

3. 解决方案 (HOW)

现代化命令 (switch vs checkout)

老教程教你用 checkout。新版 Git (2.23+) 推出了语义更清晰的 switch

1. 创建并穿越到新宇宙

# 旧写法: git checkout -b feature/login
# 新写法: (create)
git switch -c feature/login

现在,你做任何修改,都只属于 feature/login

2. 回到主宇宙

git switch main

你会发现,刚才写的乱七八糟的代码全消失了。别怕,它们在另一个宇宙里即时存档了。

3. 毁灭宇宙 (删除分支)

功能上线后,这个平行宇宙就没用了。

git branch -d feature/login

多重宇宙图

graph TD
    V1["v1.0 (Main: 稳定)"] -->|switch -c| Feature["feature/login (开发中)"]
    
    subgraph FeatureBranch ["你的平行宇宙"]
        Feature --> C1["写登录UI"]
        C1 --> C2["写登录逻辑 (此时主宇宙依然是 v1.0)"]
    end
    
    V1 -->|紧急| Fix["hotfix/pay-bug"]
    Fix -->|Commit| FixC["修复支付bug"]
    FixC -->|Merge| V2["v1.0.1 (Main: 修复版)"]
    
    C2 -->|Merge| V3["v1.1.0 (Main: 含新功能)"]
    
    style FeatureBranch fill:#e3f2fd,stroke:#1565c0
    style FixC fill:#ffcc80,stroke:#ef6c00
    style V1 fill:#c8e6c9

4. 真实案例

Story

黑色星期五的"毒药"提交

某电商公司备战黑色星期五。 周四晚上,一位开发者为了赶进度,直接在 main 分支上开发了一个还在实验中的推荐算法。 他只写了一半,为了回家睡觉,他就 commitpush 了。 周五零点,流量洪峰到来。 自动部署系统把这个半成品推到了线上。 所有用户打开 App 都是白屏(因为推荐接口报错)。 损失:那一小时内,公司损失了数百万美元的订单。

Vibe 心法main 分支是生产环境的生命线。任何未经测试的代码都不应该直接出现在 main 上。 Protect Main Branch 不仅是一句口号,更是 GitHub 仓库设置里的一个必选项。


5. 本章小结

  1. 隔离:任何新功能,都要开新分支。
  2. 切换:用 git switch 在宇宙间跳跃,别把代码混在一起。
  3. 敬畏:永远不要直接 Push 到 main (除非你是去做个人练习生)。