首页/开发/Git 与协作速查/git branch 分支基础操作

git branch 分支基础操作

列出、创建、改名与删除分支;分支本身只是指向提交的轻量指针,创建与切换成本都很低。

Git 与协作速查开发更新于 2026-10-13

git branch 是什么

git branch 负责分支的列出、创建、改名与删除。分支在 Git 里只是一个指向某次提交的轻量指针,创建与切换的代价几乎为零,所以「为每个任务开一条短分支」是可行的默认做法。要注意 branch 本身只创建不切换,切换需要用 git switch。

指针视角看分支

把分支理解成指针,很多行为就顺了:提交时当前分支指针自动前移;合并时指针被移动到新位置;删除分支只是删掉一个引用,提交对象在 reflog 过期前依然存在。git branch -v 告诉你每条分支指向哪个提交,-vv 还会显示上游关系与领先落后数。

基本信息

适用平台Linux / macOS / Windows(Git 2.23 起用 switch 切换)
语法git branch [选项] [<分支名>] [<起点>]
列出-a 含远端;-r 只看远端;-vv 显示上游与领先落后
创建git branch <名称> [<起点>],只创建不切换
改名-m 重命名,-M 强制重命名
删除-d 已合并才删,-D 强制删除

典型使用场景

  • 按任务开分支:每个需求或修复各自一条分支,互相隔离
  • 查看全貌:用 -a 或 -vv 看清本地与远端分支及跟踪关系
  • 清理分支:合并完成后删除已合入的功能分支
  • 改名规范:把写错的名字用 -m 修正,避免在远端重复建分支
  • 从历史点起步:以标签或提交为起点开热修复分支
  • 排查遗留:找回被删分支上的提交(配合 git reflog)

常用示例

常用示例
git branch                      # 列出本地分支,当前分支带星号
git branch -a                   # 含远端跟踪分支
git branch -vv                  # 显示上游关系与领先落后
git branch feature/login        # 创建分支但不切换
git branch hotfix/1.2.1 v1.2.0  # 以标签为起点创建分支
git branch -m old-name new-name # 重命名分支
git branch -d feature/login     # 删除已合并的分支
git branch -D feature/wip       # 强制删除未合并的分支

常用选项对照

选项含义风险提示
-a列出本地与远端全部分支远端分支不能直接切换提交
-r只列远端跟踪分支需要先 fetch 才是最新
-v显示每条分支指向的提交快速定位分支落点
-vv附上游与领先落后数排查推送目标最有用
-m重命名分支改名前确认远端是否已有同名
-d删除已合并分支未合并时会被拒绝
-D强制删除分支未合并内容会失去引用
按任务开短分支是协作基线:主线保持随时可发布,改动隔离在分支上,评审与回滚都更简单。
-d 对未合并分支会直接拒绝,这是保护机制。确实不需要时再用 -D,但先确认那些提交的内容真的可以丢弃。
分支默认只存在于本地。要让团队看到,需要 git push -u 把它推上去并建立跟踪关系。
删除分支只是删掉引用,提交对象仍会在 reflog 中保留一段时间。误删后可以用 git reflog 找到分支尖端再重新建回来。

分支命名与生命周期

分支名建议写成「类别/简短描述」的形式,例如 feature/login、fix/order-timeout、hotfix/1.2.1,既方便按前缀筛选,也能在列表里一眼看出用途。生命周期上功能分支越短越好:合入后立即删除,避免同一条分支长期存在、反复同步主干而产生大量没有意义的合并提交。

git branch 只创建不切换,新手最常见的错误是建完分支以为已经在上面,结果继续在旧分支提交。用 git branch --show-current 确认当前所在分支。
远端分支被删除后,本地的远端跟踪引用不会自动消失。用 git fetch --prune 清理,避免 git branch -r 里一直显示出早已不存在的分支。

易错点

  • -d 对未合并分支会拒绝,确认内容不再需要再考虑 -D,否则那些提交会失去引用
  • 分支只在本地创建,推送后团队才能看到,记得用 -u 建立跟踪关系
  • 重命名承担着远端对应关系的分支会导致推送目标失效,改名前先看 git branch -vv
  • 在错误的分支上开始改代码,事后要用 cherry-pick 或 stash 迁移,比一开始就切好分支麻烦得多

数据来源与参考

  • Git 官方文档:git-branch
  • Pro Git 2nd Edition · 3.1 分支简介
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌