Git Branch介绍(创建分支)(分支是指向某个提交commit的指针)切换分支:git checkout、git switch;重命名分支;git HEAD

📅 2026/7/10 16:30:44 👁️ 阅读次数 📝 编程学习
Git Branch介绍(创建分支)(分支是指向某个提交commit的指针)切换分支:git checkout、git switch;重命名分支;git HEAD

文章目录

  • Git Branch 全面指南:从入门到实践
    • 一、什么是 Git Branch?
    • 二、为什么需要分支?
      • 1. 功能开发
      • 2. Bug 修复
      • 3. 实验性开发(试错)
    • 三、常用 git branch 命令
      • 1. 查看分支
      • 2. 创建分支
      • 3. 切换分支
      • 4. 创建并切换(常用)
      • 5. 删除分支
      • 6. 重命名分支
    • 四、分支与 HEAD
    • 五、分支的底层原理
    • 六、分支合并(简单说明)
    • 七、分支最佳实践(非常重要)
      • 1. 分支命名规范
      • 2. 分支生命周期
      • 3. 小步提交 + 快速合并
      • 4. 主分支保护
    • 八、常见误区
      • ❌ 误区 1:分支很重
      • ❌ 误区 2:一个功能一个仓库
      • ❌ 误区 3:不删除分支
    • 九、总结
  • 注:创建分支是基于当前HEAD指针所指向的提交(commit)创建的
    • 创建分支是基于什么创建的?
    • 创建的新分支是空代码吗?
      • 分支的本质
      • 举个例子
      • 验证方法
    • 总结

Git Branch 全面指南:从入门到实践

在日常开发中,分支(branch)是 Git 最核心、最强大的功能之一。无论是多人协作、功能开发,还是版本管理,分支都扮演着关键角色。

本文将从概念、常用命令到实践策略,系统介绍git branch


一、什么是 Git Branch?

在 Git 中,分支本质上是一个指向某个提交(commit)的指针

你可以把它理解为:

分支 = 一条独立的开发时间线

默认情况下,Git 会有一个主分支:

  • main(或旧版本中的master

当你创建新分支时,本质上只是创建了一个新的指针,不会复制代码,因此非常轻量。


二、为什么需要分支?

分支的核心价值是:隔离开发,避免相互影响

常见使用场景:

1. 功能开发

gitbranch feature/login

为新功能单独开分支,开发完成后再合并。

2. Bug 修复

gitbranch fix/payment-error

3. 实验性开发(试错)

gitbranch spike/new-cache-strategy

👉 好处:

  • 不污染主分支
  • 可随时丢弃
  • 多人协作更安全

三、常用 git branch 命令

1. 查看分支

gitbranch

输出示例:

* main feature/login
  • *表示当前所在分支

查看远程分支:

gitbranch-r

查看所有分支:

gitbranch-a

2. 创建分支

gitbranch feature/api

👉 注意:只是创建,不会切换


3. 切换分支

gitcheckout feature/api

或者(推荐新命令):

gitswitch feature/api

4. 创建并切换(常用)

gitcheckout-bfeature/api

或:

gitswitch-cfeature/api

5. 删除分支

删除本地分支:

gitbranch-dfeature/api

强制删除(origin 是默认的远程仓库名称):

gitbranch-Dfeature/api

删除远程分支:

gitpush origin--deletefeature/api

6. 重命名分支

gitbranch-mold-name new-name

四、分支与 HEAD

Git 中有一个重要概念:HEAD

HEAD 指向当前所在分支

例如:

HEAD → feature/login → commit A

当你切换分支时,其实是移动 HEAD:

gitswitch main
HEAD → main → commit B

五、分支的底层原理

Git 分支非常轻量,因为:

  • 分支只是一个指针(pointer)
  • 不复制代码
  • 创建几乎是瞬间完成

结构示意:

A---B---C (main) \ D---E (feature)

这里:

  • main指向 C
  • feature指向 E

六、分支合并(简单说明)

创建分支只是第一步,最终需要合并:

gitmerge feature/api

或者使用 rebase:

gitrebase main

👉 两者区别:

mergerebase
保留历史历史更线性
简单安全更干净但有风险

七、分支最佳实践(非常重要)

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,包含完全相同的代码

验证方法

你可以通过以下命令验证:

# 查看当前分支的最新提交gitlog--oneline-1# 切换到新分支gitcheckout feature/login# 查看新分支的最新提交(应该和上面一样)gitlog--oneline-1# 查看文件(应该和之前完全一样)ls-la

总结

  • ✅ 新分支基于当前HEAD指向的提交创建
  • ✅ 新分支包含完整的代码(不是空的)
  • ✅ 创建分支非常快速,因为只是创建指针,不复制文件
  • ✅ 只有在新分支上进行新的提交后,两个分支才会开始分叉