DAG总览 / 组目录 / 版本管理

分支(Branch)

G02Layer 3
目录:前置概念账号与仓库版本管理协作项目管理自动化部署工具生态
层导航:L0L1L2L3 当前L4L5L6L7L8
上游 · 理解本功能前需先掌握的(1):
下游 · 依赖/承接本功能的(3):
前置依赖包含从属概念升级流程承接 边方向 = 学习顺序(A→B 表示先学 A 再学 B)

为什么需要它

心智模型

你想加个新功能,又怕把好好的代码改坏?分支(branch)就是为此而生:它让你在一条'平行岔路'上放心实验,改坏了大不了不要这条岔路,主线一点不受影响。这是 Git 最优雅的设计之一。

历史背景 · 它为什么诞生诞生于 2005/2011
诞生多数VCS的分支需把整个源码目录复制到新目录,大项目耗时数秒甚至数分钟,导致团队回避频繁分支。Git的分支只是一个指向提交的可移动指针,创建分支仅需写41字节,操作瞬间完成,成为Git的"杀手锏"。
演进分支从"少数重量级操作"变为"日常开发单元":2011年Scott Chacon发表GitHub Flow(master始终可部署→建描述性分支→推送→开PR评审→合并即部署),把SVN时代的昂贵分支简化为一日多次的分支-合并循环。
历史教训
降低操作成本会改变使用习惯:当分支成本趋近于零,频繁分支合并成为常态,工程纪律(评审、可部署性)随之建立。低成本抽象能重塑整个工作方式。

功能介绍

官方定义说,分支'让你能开发新功能、修复 bug 或安全地做实验'。分支是从某个既有分支'派生'出来的一条独立工作线:你在分支上的提交不会影响其他分支。仓库默认的主分支叫 main(早期也叫 master),通常是稳定的主版本所在。典型工作流是:从 main 上开一个功能分支(feature branch)→ 在分支上提交多次 → 完成后把分支合并回 main → 删除这个临时分支。切分支用 git checkout 或 git switch。分支是轻量级的,创建几乎零成本,所以大胆多用;'每件独立的事开一个分支'是专业团队的基本纪律。

核心术语

分支(branch):从既有分支派生出的独立工作线main:仓库的默认主分支切换(checkout/switch):在不同分支之间移动当前工作位置功能分支(feature branch):专门开发某个功能的分支派生(derive):新分支从某个提交点延伸出来

适用场景

怎么操作(网页 vs 命令行 双轨)

🖱️ 网页操作 (GitHub.com)
  • 在仓库页面上方点击分支选择器(显示当前分支名),搜索或输入名字创建新分支
  • 在 Pull Request 页面选择源分支和目标分支查看对比
  • 在 'Branches' 标签页查看所有分支并管理删除
⌨️ 命令行 (进阶)
  • git branch feature-1 # 创建新分支 feature-1
  • git checkout feature-1 # 切换到该分支(也可用 git switch)
  • git checkout -b feature-2 # 一步完成创建并切换
  • git branch # 查看所有分支,* 号标记当前所在分支

新手建议先从网页操作入手,熟悉概念后再尝试命令行。命令行是真实开发中更常用的方式。

与其他功能的关系

关系(前置依赖 / 包含从属 / 概念升级 / 流程承接)说明
概念升级提交(Commit)commit 是分支的内容,理解提交后才理解分支
流程承接合并(Merge)分支开发完成后合并回目标分支
流程承接拉取请求(Pull Request)PR 比较 head branch 与 base branch,先懂分支
流程承接静态网站托管:GitHub Pages(页面)从指定分支发布静态站点(底层也是 Actions)

官方文档

小结

SUMMARY

分支是一条可进可退的独立工作线,默认主分支是 main,新功能开新分支、完成再合并。'先开分支再动手'会让你从此告别改坏代码的恐惧。下一步:学会把分支的成果合并回主线。