Git 版本控制与跨平台协作
10.7 分支管理
Tip
在平行宇宙里杀人放火,不会影响主宇宙的和平。这就是分支的意义。
1. 为什么要学这个?
没有分支的团队是地狱。 你正在改登录页的 CSS,改了一半,页面乱七八糟。 突然老板说:"线上支付挂了,赶紧修!" 你怎么办?
- 提交烂代码? 线上登录页会炸。
- 删掉代码? 一早上的白干了。
- 不修? 公司倒闭。
分支 (Branch) 允许你随时开启一个"平行宇宙"。在那里,你可以把世界毁灭一万次,而主宇宙 (main) 依然岁月静好。
2. 核心概念:Feature Branch Workflow
宇宙法则
- main (主宇宙): 神圣不可侵犯。这里的代码永远是可运行的、绿色的。只有完全测试好的代码才能"合并"回来。
- feature/xxx (平行宇宙): 这是你的游乐场。比如
feature/login-page。你在里面删库跑路都没人管你。 - 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 分支上开发了一个还在实验中的推荐算法。
他只写了一半,为了回家睡觉,他就 commit 并 push 了。
周五零点,流量洪峰到来。
自动部署系统把这个半成品推到了线上。
所有用户打开 App 都是白屏(因为推荐接口报错)。
损失:那一小时内,公司损失了数百万美元的订单。
Vibe 心法:
main 分支是生产环境的生命线。任何未经测试的代码都不应该直接出现在 main 上。
Protect Main Branch 不仅是一句口号,更是 GitHub 仓库设置里的一个必选项。
5. 本章小结
- 隔离:任何新功能,都要开新分支。
- 切换:用
git switch在宇宙间跳跃,别把代码混在一起。 - 敬畏:永远不要直接 Push 到
main(除非你是去做个人练习生)。