开发中分支管理是每天都要打交道的事:开功能分支、切回主干修 bug、合并、删掉用完的分支,动作高频而固定。这篇把最常用的分支命令整理成速查——查看、创建、切换、删除、合并五大类,每条配使用场景与易错点,现代等价命令(git switch)也一并给出。更系统的讲解推荐直接读 Pro Git 中文版的分支章节。
1、查看分支
先看清现场再动手,三个查看命令如下:
git branch # 查看本地分支(当前分支带 * 标记)
git branch -r # 查看远程所有分支
git branch -a # 本地与远程一起看
日常建议直接用 git branch -a:本地有哪些、远程有哪些、还差哪条没拉下来,一眼看清。只看名字不够时,git branch -v 会附带每个分支的最新提交,全部参数可查 官方 git-branch 文档。
2、创建与推送分支
创建新分支、从已有分支派生、推送到远程,一组命令如下:
git branch dev # 基于当前分支创建 dev 分支(不切换过去)
git checkout -b dev master # 基于 master 创建 dev 并切换过去
git checkout -b dev origin/dev # 在本地创建远程已有分支的跟踪分支
git push -u origin dev # 推送新分支到远程,并建立上游跟踪
两点值得记:checkout -b 新分支 已有分支 的第三种用法最实用——远程同事推了新分支,本地一条命令就能建出对应的跟踪分支。推送时加 -u(即 --set-upstream),之后这个分支直接 git pull / git push 即可,不用再写全 origin 分支名。
3、切换分支
切换用老命令或现代命令皆可:
git checkout dev # 经典写法
git switch dev # 现代写法(Git 2.23+)
git switch -c dev # 创建并切换,等价于 checkout -b
git switch 是 2.23 版本后官方拆分出的专职命令:checkout 身兼切换、恢复文件、建分支数职,容易误伤(比如带路径时变成恢复文件),switch 只管切分支,语义更安全。新脚本和新习惯建议都用 switch。
4、删除分支
本地删除与远程删除分开处理:
git branch -d dev # 安全删除:要求分支已完全合并进上游
git branch -D dev # 强制删除:不检查合并状态
git push origin --delete dev # 删除远程分支
-d 与 -D 的区别要记牢:小写 -d 会做合并检查,未合并的分支拒绝删除,防止误删丢代码;大写 -D 跳过检查直接删,只用于确认放弃的分支。远程删除用 push --delete,旧式的 git push origin :dev(空分支名推法)效果相同但不直观,不推荐。
5、合并分支
把指定分支合并进当前分支,冲突时走三步流程:
git merge feature # 将 feature 合并到当前分支
git status # 冲突时先看哪些文件待解决
git add 冲突文件 # 手动改完后标记已解决
git commit # 完成合并提交
合并方向容易搞反:git merge feature 是把 feature 合进来,所以动手前先用 git branch 确认自己站在哪个分支上——通常是先切到 master,再 merge 功能分支。想保留合并轨迹(避免 fast-forward 抹掉分支历史)可以加 --no-ff。
6、常用命令速查表
五类动作浓缩成一张表,贴在手边直接查:
| 场景 | 命令 |
|---|---|
| 查看本地 / 远程分支 | git branch / git branch -r |
| 创建并切换分支 | git switch -c dev |
| 本地建远程已有分支 | git checkout -b dev origin/dev |
| 推送并建立跟踪 | git push -u origin dev |
| 安全删 / 强删本地 | git branch -d dev / -D dev |
| 删除远程分支 | git push origin --delete dev |
| 合并进当前分支 | git merge feature |
7、总结
分支管理五类命令各司其职:branch 系列管查看与删除,switch -c(或 checkout -b)管创建与切换,push -u 建立远程跟踪,merge 收拢成果。三个易错点值得反复提醒——删分支分清 -d 与 -D、合并前确认当前分支、未推送的本地分支别人看不见。更全的用法可翻 菜鸟教程的分支章节。对于日常开发,建议把第 6 节的速查表存进备忘录,配合 Pro Git 系统补课,分支操作就再没有含糊的空间。


