分支概念与创建
本教程共 26 篇 · 第 9 篇 · 更新于 2026-07-29 · 约 7 分钟阅读
9. 分支概念与创建
本节目标:理解分支的本质,能创建、查看、切换分支,搞清楚 HEAD 指向谁。
分支是什么
分支就是平行宇宙。
你在电脑前学 Git,另一个宇宙的你可能在学 SVN。两个宇宙互不干扰,直到某天合并了——你俩都会了。
在 Git 里,分支让你从主线上分离出来干活。别人看不到你的分支,你也不影响他们。开发完再合并回去。
分支的本质:一个指针
Git 的分支,本质上就是一个指向某个提交的可变指针。
每次提交,分支指针自动往前移动。创建新分支,就是新建一个指针。切换分支,就是让 HEAD 指向不同的指针。
因为只是一个 41 字节的文件(40 字符 SHA-1 + 1 个换行符),创建和销毁分支几乎瞬间完成。
NoteSVN 的分支是复制整个目录,大项目要几分钟。Git 的分支是毫秒级。这就是为什么 Git 鼓励频繁用分支。
HEAD 是什么
HEAD 是一个特殊指针,指向当前所在的分支。
可以把 HEAD 想象成”你当前在哪个平行宇宙”的标记。
默认情况下,HEAD 指向 main(历史资料多为 master)。
查看分支
git branch
输出:
* main
* 表示当前在 main 分支。
查看所有分支(包括远程):
git branch -a
创建分支
git branch feature
这会在当前提交上创建一个名为 feature 的分支。注意:创建后不会自动切换过去。
想创建并切换,用 git switch(Git 2.23+):
git switch -c feature
旧写法是 git checkout -b feature。switch 语义更清晰,推荐用新的。
切换分支
git switch feature
HEAD 现在指向 feature 分支了。
再切回 main:
git switch main
Warning切换分支会改变工作目录里的文件。如果切到一个旧分支,文件内容会回到那个分支最后一次提交的样子。有未提交的改动时,Git 可能拒绝切换。
分支指针怎么移动
假设当前状态:
main → commit A
feature → commit A(刚创建,和 main 指向同一提交)
HEAD → feature
在 feature 上提交一次:
git add .
git commit -m "add feature"
现在:
main → commit A
feature → commit B(往前移动了)
HEAD → feature
main 没动,只有 feature 往前走了。
查看分支指向
用 git log --oneline --decorate 看分支指向:
git log --oneline --decorate --graph --all
输出:
* abc123d (HEAD -> feature) add feature
* def456a (main) initial commit
HEAD -> feature 表示当前在 feature 分支。main 还停在原地。
删除分支
分支合并完了,可以删掉:
git branch -d feature
如果分支还没合并,Git 会拒绝删除。强制删除用 -D:
git branch -D feature
重命名分支
git branch -m old-name new-name
重命名当前分支:
git branch -m new-name
分支使用流程
典型的分支工作流:
- 从
main创建新分支:git switch -c feature - 在分支上开发、提交
- 开发完成,切回
main:git switch main - 合并分支:
git merge feature - 删除分支:
git branch -d feature
Tip分支命名建议用有意义的名称,比如
feature/login、bugfix/header-align、hotfix/security-patch。
这章学到了什么
- 分支本质是指向提交的指针,创建和切换极快
- HEAD 指向当前所在的分支
git branch查看/创建分支git switch -c创建并切换分支git switch切换分支git branch -d删除分支- 分支指针随提交自动移动
下一章,我们学习分支合并和冲突解决。