Git Branch介绍(创建分支)(分支是指向某个提交commit的指针)切换分支:git checkout、git switch;重命名分支;git HEAD
Git Branch 全面指南:从入门到实践
在日常开发中,分支(branch) 是 Git 最核心、最强大的功能之一。无论是多人协作、功能开发,还是版本管理,分支都扮演着关键角色。
本文将从概念、常用命令到实践策略,系统介绍 git branch。
一、什么是 Git Branch?
在 Git 中,分支本质上是一个指向某个提交(commit)的指针。
你可以把它理解为:
分支 = 一条独立的开发时间线
默认情况下,Git 会有一个主分支:
main(或旧版本中的master)
当你创建新分支时,本质上只是创建了一个新的指针,不会复制代码,因此非常轻量。
二、为什么需要分支?
分支的核心价值是:隔离开发,避免相互影响
常见使用场景:
1. 功能开发
git branch feature/login
为新功能单独开分支,开发完成后再合并。
2. Bug 修复
git branch fix/payment-error
3. 实验性开发(试错)
git branch spike/new-cache-strategy
👉 好处:
- 不污染主分支
- 可随时丢弃
- 多人协作更安全
三、常用 git branch 命令
1. 查看分支
git branch
输出示例:
* main
feature/login
*表示当前所在分支
查看远程分支:
git branch -r
查看所有分支:
git branch -a
2. 创建分支
git branch feature/api
👉 注意:只是创建,不会切换
3. 切换分支
git checkout feature/api
或者(推荐新命令):
git switch feature/api
4. 创建并切换(常用)
git checkout -b feature/api
或:
git switch -c feature/api
5. 删除分支
删除本地分支:
git branch -d feature/api
强制删除(origin 是默认的远程仓库名称):
git branch -D feature/api
删除远程分支:
git push origin --delete feature/api
6. 重命名分支
git branch -m old-name new-name
四、分支与 HEAD
Git 中有一个重要概念:HEAD
HEAD 指向当前所在分支
例如:
HEAD → feature/login → commit A
当你切换分支时,其实是移动 HEAD:
git switch main
HEAD → main → commit B
五、分支的底层原理
Git 分支非常轻量,因为:
- 分支只是一个指针(pointer)
- 不复制代码
- 创建几乎是瞬间完成
结构示意:
A---B---C (main)
\
D---E (feature)
这里:
main指向 Cfeature指向 E
六、分支合并(简单说明)
创建分支只是第一步,最终需要合并:
git merge feature/api
或者使用 rebase:
git rebase main
👉 两者区别:
| merge | rebase |
|---|---|
| 保留历史 | 历史更线性 |
| 简单安全 | 更干净但有风险 |
七、分支最佳实践(非常重要)
1. 分支命名规范
推荐:
feature/xxx—— 新功能fix/xxx—— bug 修复hotfix/xxx—— 紧急修复spike/xxx—— 试验
2. 分支生命周期
建议流程:
main
└── feature/xxx
↓
merge
↓
删除
👉 不要长期保留无用分支
3. 小步提交 + 快速合并
避免:
- 超大分支
- 长时间不合并
否则会导致:
- 冲突爆炸
- review 困难
4. 主分支保护
通常:
main禁止直接提交- 必须通过 PR / MR 合并
八、常见误区
❌ 误区 1:分支很重
👉 实际上非常轻量
❌ 误区 2:一个功能一个仓库
👉 正确方式:一个仓库 + 多分支
❌ 误区 3:不删除分支
👉 会导致仓库混乱
九、总结
git branch 是 Git 最核心的能力之一:
- 分支 = 指针
- 成本极低
- 支持并行开发
- 是团队协作基础
一句话总结:
不会用分支,就等于不会用 Git
注:创建分支是基于当前HEAD指针所指向的提交(commit)创建的
创建分支是基于什么创建的?
创建分支是基于当前HEAD指针所指向的提交(commit) 创建的。
具体来说:
- 当你执行
git branch feature/login时,Git会创建一个新分支指针 - 这个指针指向的是你当前所在分支的最新提交
- 例如,如果你在
main分支上执行这个命令,新分支就会基于main分支的最新提交创建
创建的新分支是空代码吗?
不是空代码! 新分支包含完整的代码,原因如下:
分支的本质
- Git分支本质上只是一个指向某个提交的指针
- 创建新分支时,Git只是创建了一个新的指针,并没有复制文件
- 新分支指向的提交包含了该提交时的所有文件和代码
举个例子
假设当前状态:
main: A -- B -- C (HEAD)
执行 git branch feature/login 后:
main: A -- B -- C (HEAD)
↑
feature/login: ─┘
两个分支都指向同一个提交C,包含完全相同的代码
验证方法
你可以通过以下命令验证:
# 查看当前分支的最新提交
git log --oneline -1
# 切换到新分支
git checkout feature/login
# 查看新分支的最新提交(应该和上面一样)
git log --oneline -1
# 查看文件(应该和之前完全一样)
ls -la
总结
- ✅ 新分支基于当前HEAD指向的提交创建
- ✅ 新分支包含完整的代码(不是空的)
- ✅ 创建分支非常快速,因为只是创建指针,不复制文件
- ✅ 只有在新分支上进行新的提交后,两个分支才会开始分叉
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)