Command Reference

git branch 教程

系统说明 git branch 如何查看、创建、重命名和删除分支,以及它与远端跟踪分支的关系。

适合谁看
  • 已经会基本提交和分支操作的开发者
  • 想理解命令边界与风险的人
前置知识
  • 知道工作区、暂存区、提交的基本关系
  • 能读懂 `git status` 和简单历史图
常见风险
  • 误把本地整理命令用到共享历史
  • 在没确认恢复路径前直接继续改写历史

一句话理解

git branch 负责管理分支引用,本质上是在查看或移动那些“指向提交的名字”。

查看分支

git branch

它会列出本地分支,当前分支前面会有 * 标记。

查看远端跟踪分支

git branch -r

同时查看本地和远端

git branch -a

查看上游和最后一次提交

git branch -vv

这是日常排查“我这个分支追踪谁、落后了多少”的高频命令。

创建分支

git branch feature/login

这只会创建分支,不会自动切换过去。想创建后直接进入,通常会搭配 git switch -c

重命名和删除

git branch -m old-name new-name
git branch -d feature/login

其中 -d 只删除已经安全合并的分支;如果你明确要强制删除,才使用 -D

它和远端跟踪分支的关系

很多人会把 mainorigin/main 混在一起。其实前者是本地分支,后者是远端跟踪分支。fetch 更新的是后者,merge 或 rebase 才会把这些变化整合进前者。

常见误区

误区 1:branch 会帮我切过去

不会。git branch 主要管理分支本身,切换通常交给 git switch 或旧式的 checkout

误区 2:删除分支等于删除提交

不一定。只要还有别的引用指向这些提交,或者 reflog 还保留着它们,提交对象通常依然存在。

一个团队建议

git branch -vv 养成日常习惯,会大幅减少“我以为自己同步了主分支”这类误判。

这条命令在流程里解决什么问题

git branch 工作在引用层,负责创建、重命名、列出和删除分支。它不碰工作区内容,也不处理暂存区——它的核心职责是管理"指向提交的名字",让你能在不同的开发线之间组织工作。

典型用例

  • git branch 列出所有本地分支,快速了解当前有哪些开发线。
  • git branch -vv 查看每个分支的上游跟踪关系和最后一次提交,是排查同步状态的高频用法。
  • git branch -d 安全删除已合并的分支,保持分支列表整洁;确认要强制删除时用 -D

图例理解

分支引用的创建与管理分支本质上是指向提交的引用,branch 命令管理这些引用的增删改查,不涉及文件内容。
输入
分支名称目标提交(创建时)当前 HEAD
产出
refs/heads/ 下的新引用更新的分支列表删除的引用
branch 只管理引用本身,切换分支要用 switch/checkout,合并/变基要用 merge/rebase。

特殊情况与边界

  • git branch 只创建分支引用,不会自动切换过去——切换需要 git switch
  • 删除分支不等于删除提交:只要还有其他引用或 reflog 指向它们,提交对象依然存在。
  • git branch -d 拒绝删除未合并的分支,这是一种安全保护;确认不需要时用 -D 强制。
  • 远端跟踪分支(如 origin/main)和本地分支(如 main)是独立的,fetch 更新前者,需要 merge 或 rebase 才会整合进后者。