4. 分支
这是什么:分支(branch) = 从某一点岔出去的平行世界,主干 main 保持稳定,实验和新功能在岔路上折腾,好再合回,坏直接扔。
为什么用:上一章你把改动都堆在一条线上提交。可新功能还没写完就合进主干,一旦搞砸整个项目跟着完蛋;多人同时改同一份代码更是灾难。分支让每件事各走各的路。
如何用:本章用 git switch -c 建分支、跳分支、删分支,再用 HEAD 搞清楚「我现在站在哪」。
4.1 为什么必须有分支
多人协作或并行任务没有分支会怎样?——两个 Feature 混在 main 里,A 的 Comp 充满 half-code、B 的 bug 没人敢动。每个任务一个分支,main 永远是「随时能发布」的状态。
4.2 基础命令
git branch # 看分支列表(* 是当前)
git branch add-weather # 新建
git switch add-weather # 切过去(新命令)
git switch -c add-weather # 新建并切过去(一招合并)
git switch main # 回主干
git branch -d add-weather # 删除(已合并才允许)
旧教程常见 git checkout,等价于 switch(更古老但兼容性更强),两者皆可。
4.3 实操理解分支
git switch -c test-branch
echo "实验代码" >> a.txt
git add . && git commit -m "feat: 实验功能"
git switch main # 回来!
cat a.txt # 工作区没有「实验代码」!
git switch test-branch
cat a.txt # 又有了!
你会看到:同一个文件在两条分支上自由切换版本——就像多个世界平行。
4.4 分支命名习惯
| 类型 | 命名 |
|---|---|
| 新功能 | feat_天气插件 |
| 修 bug | fix_首页白屏 |
| 文档 | docs_部署说明 |
(本博客 README 的贡献流程写的就是:新建 feat_xxx 分支。)
4.5 必懂的 HEAD
HEAD 是「你现在站在哪」的指针(不是分支的头部那么抽象,就指当前检出的位置)。git log 输出里 HEAD -> main 就是说:你这条 commit 属于 main 的最新位置。
4.6 动手改
- 从 main 拉出
feat_readme分支,改一行提交,切回 main 看该行不在 - 在 main 再单独改一处 commit,制造「两条分支各有改动」
- 试着
git branch -d feat_readme(完成合并之前它会拒绝——下一章解决)
4.7 小结
- 分支 = 平行世界;main 般保持「随时可发布」
switch -c新建切换一步到位- HEAD 就是「我在哪」的标记
下一章:合并与冲突 🐸