Skip to content

🌿 第七章:分支管理 —— 平行宇宙

分支是什么?

想象一下:你正在写小说,写到一半想试试让主角黑化。但你又不想破坏原来的故事线。怎么办?开一个"平行宇宙"——这就是分支。

在 Git 里,创建分支几乎不花任何成本(只是一个指针),但它的威力可大了:

  • 每个功能可以独立开发,互不影响
  • 实验性的代码可以放在分支上,搞砸了直接删掉
  • 多个人可以同时开发不同的功能
  • 主分支始终保持可运行状态

分支的基本操作

bash
# 查看所有分支
git branch
* main

# 创建新分支
git branch feature/用户登录

# 切换到新分支
git switch feature/用户登录
Switched to branch 'feature/用户登录'

# 创建并切换(一步到位!推荐!)
git switch -c feature/用户注册
Switched to a new branch 'feature/用户注册'

# 查看所有分支(包括远程分支)
git branch -a
* feature/用户注册
  feature/用户登录
  main
  remotes/origin/main

# 查看每个分支的最后一次提交
git branch -v
* feature/用户注册  f4e5d6c feat: 添加欢迎语
  feature/用户登录  f4e5d6c feat: 添加欢迎语
  main             f4e5d6c feat: 添加欢迎语

📝 备注: 旧版本的 Git 使用git checkout来切换分支。Git 2.23+ 引入了git switch(切换分支)和git restore(恢复文件),语义更清晰。git checkout仍然可用,但它同时承担了太多职责(切换分支 + 恢复文件 + 创建分支),容易让人困惑。

分支命名规范

好的分支名就像好的文件名——一看就知道是干什么的。

bash
# 推荐的命名格式:<类型>/<描述>

# ✅ 好的命名
feature/用户登录
feature/商品搜索
bugfix/修复登录超时
hotfix/修复支付漏洞
release/v1.2.0
experiment/新首页设计

# ❌ 不好的命名
git branch test
git branch my-branch
git branch fix
git branch temp
git branch aaa

删除分支

bash
# 功能开发完成后,删除分支
git switch main
git branch -d feature/用户登录
Deleted branch feature/用户登录 (was b2c3d4e).

# 如果分支还没合并,Git 会阻止删除
git branch -d feature/用户注册
error: The branch 'feature/用户注册' is not fully merged.
If you are sure you want to delete it, run 'git branch -D'.

# 强制删除(你确定不要了?)
git branch -D feature/用户注册
Deleted branch feature/用户注册 (was f4e5d6c).

💡 提示: -d(小写)是安全删除,只有已合并的分支才能删。-D(大写)是强制删除。就像门锁——-d是普通锁,-D是把门踹开。