Git 分支管理是 Git 最强大、最核心的功能。掌握好分支,你就能轻松实现多人协作、功能并行开发、热修复、发布管理等高级玩法。
1. 核心概念(先搞清楚这几个名词)
| 名词 | 含义 | 常用命令查看 |
|---|---|---|
| HEAD | 当前“你站在哪个位置”(指针) | cat .git/HEAD |
| 本地分支 | 存在你电脑上的分支 | git branch |
| 远程分支 | 存在 GitHub/GitLab 上的分支(origin/main、origin/dev 等) | git branch -r |
| 远程跟踪分支 | 本地记录的“远程分支最新位置”(origin/main、origin/feature-xxx 等) | git branch -vv |
| 上游分支(upstream) | 告诉你本地分支该 push/pull 到哪个远程分支 | git push -u 后自动设置 |
2. 常用分支命令速查表(直接复制粘贴用)
| 场景 | 命令 | 说明 |
|---|---|---|
| 查看所有本地分支 | git branch | 带 * 的是当前分支 |
| 查看本地+远程分支 | git branch -a | 红色的是远程分支 |
| 创建分支 | git branch 新分支名 | 只创建,不切换 |
| 创建并切换分支(最常用) | git switch -c 新分支名 或 git checkout -b 新分支名 | 一条命令搞定 |
| 切换分支 | git switch 分支名 或 git checkout 分支名 | |
| 推送分支到远程(第一次) | git push -u origin 分支名 | -u 记住上游,以后直接 git push/pull 就行 |
| 推送分支(已设置上游后) | git push | 最爽的命令 |
| 拉取远程最新内容 | git pull | |
| 删除本地分支 | git branch -d 已合并的分支 | 安全删除 |
| 强制删除本地分支 | git branch -D 未合并的分支 | |
| 删除远程分支 | git push origin –delete 分支名 或 git push origin :分支名 | 两种写法都行 |
| 重命名当前分支 | git branch -m 新名字 |
3. 主流分支模型(公司真实在用的)
A. GitHub Flow(最简单、最推荐中小团队)
main(永远可发布)
↑
└── feature/login
└── feature/pay
└── bugfix/header
规则:
- main 分支永远稳定、可随时上线
- 所有新功能、修复都在特性分支完成
- 完成后直接开 Pull Request → 合并到 main → 删除特性分支
B. Git Flow(大公司传统经典模型)
main → 正式发布版本
develop → 正在开发的集成分支
feature/* → 功能分支(从 develop 创建)
release/* → 发布前测试分支
hotfix/* → 线上紧急修复分支(从 main 创建)
常用命令(需要安装 git-flow 插件):
git flow init # 初始化
git flow feature start login # 开始新功能
git flow feature finish login # 完成并合并到 develop
git flow release start 1.0.0 # 准备发布
git flow hotfix start bug123 # 紧急修复
注意:现在很多团队觉得 Git Flow 太重,已经改用更简单的 Trunk-Based 或 GitHub Flow。
4. 真实开发中每天都在用的分支流程(2025 年最主流做法)
# 1. 每天早上先更新 main
git switch main
git pull
# 2. 从最新的 main 创建特性分支
git switch -c feature/user-profile
# 3. 正常开发,多次小提交
git add .
git commit -m "添加用户头像上传"
# 4. 推送到远程(第一次带 -u)
git push -u origin feature/user-profile
# 5. 开发完成 → GitHub/GitLab 开 Pull Request
# 6. 别人 Review 通过 → 合并到 main(可选择 squash 合并)
# 7. 删除远程分支(合并时自动可选)
# 8. 本地同步删除
git fetch --prune # 自动删除本地已不存在的远程分支跟踪
5. 高级但超实用技巧
| 技巧 | 命令 | 用途 |
|---|---|---|
| 保持历史干净(推荐) | PR 合并时选 “Squash and merge” | 把整个分支压缩成 1 个 commit |
| 临时切换分支藏起当前改动 | git stash → git switch xxx → git stash pop | 紧急修复时必备 |
| 把别人的分支拉到本地开发 | git fetch origin git switch -c 本地名 origin/远程分支名 | 比如接手别人没写完的功能 |
| 同步远程删除了的分支 | git fetch –prune 或简写 git fetch -p | 清理本地过期的 origin/xxx 记录 |
| 查看分支图(神器) | git log –oneline –graph –all –decorate | 或装 tig、GitKraken、Sourcetree |
6. 一张图记住 99% 的分支操作
main ───┐ ← 永远稳定
├─ feature/A ───┐
├─ feature/B ───┤──→ Squash → main
└─ hotfix/xxx ──┘
掌握以上内容,你已经完全超越 90% 的开发者了!
需要我给你一份:
- 彩色打印版 Git 分支管理速查表(PDF)
- 公司级分支命名规范模板
- GitHub PR 最佳实践清单
随时说一声,我立刻发给你!