跳过正文
  1. 教程/
  2. Git 入门到实操:新手从 0 到会用提交、分支、回退和远程仓库/

Git 分支管理

·3303 字·7 分钟
Evan Wu
作者
Evan Wu
记录 AI、技术实践、效率工具、项目经验与学习思考。
目录
Git Mastery - 系列专栏
✦ 9: 本文

在 Git 中,分支是日常开发里非常重要的概念。无论是开发新功能、修复 Bug、多人协作,还是发布版本,几乎都会用到分支管理。

Git 分支管理常用命令
#

操作命令
查看本地分支git branch
查看远程分支git branch -r
查看所有分支git branch -a
创建分支git branch 分支名
创建并切换分支git switch -c 分支名
切换分支git switch 分支名
重命名当前分支git branch -m 新分支名
重命名指定分支git branch -m 旧分支名 新分支名
删除本地已合并分支git branch -d 分支名
强制删除本地分支git branch -D 分支名
删除远程分支git push origin --delete 分支名
查看已合并分支git branch --merged
查看未合并分支git branch --no-merged
推送本地分支到远程git push -u origin 分支名

1. 什么是 Git 分支
#

Git 分支可以理解为一条独立的开发线。

假设当前项目的主分支是 main,线上代码稳定运行。现在你要开发一个新功能,如果直接在 main 分支上修改代码,可能会影响稳定版本。

更好的做法是创建一个新分支,比如:

# 创建一个名为 feature/login 的新分支
git branch feature/login

然后在这个分支上开发登录功能。这样你的修改不会影响 main 分支。等功能开发完成并测试通过后,再把这个分支合并回 main。

简单来说:

main 分支:保存稳定代码
feature 分支:开发新功能
bugfix 分支:修复问题
release 分支:准备发布版本

分支的核心作用是:让不同任务可以并行开发,互不干扰

使用分支可以带来几个明显好处:

  1. 隔离开发环境
    新功能、Bug 修复、实验代码都可以放到独立分支中,不影响主分支。
  2. 方便多人协作
    不同开发者可以在不同分支上工作,最后通过合并代码完成协作。
  3. 降低发布风险
    主分支可以保持稳定,未完成的功能不会直接进入正式版本。
  4. 方便代码回溯
    每个分支都有清晰的开发记录,方便查看某个功能的提交历史。

在实际项目中,分支管理是 Git 工作流的基础。理解分支后,后面的提交、合并、冲突解决、版本发布都会更容易掌握。


2. 查看 Git 分支
#

在操作分支之前,首先要知道当前仓库有哪些分支,以及自己正处在哪个分支上。

2.1 查看本地分支
#

使用下面的命令可以查看本地所有分支:

git branch

示例输出:

  dev
* main
  feature/login

其中带 * 的分支表示当前所在分支。

上面的结果表示当前位于 main 分支,本地还有 dev 和 feature/login 两个分支。

2.2 查看远程分支
#

如果想查看远程仓库中的分支,可以使用:

git branch -r

示例:

origin/main
origin/dev
origin/feature/login

这里的 origin 通常表示远程仓库名称。

2.3 查看本地和远程所有分支
#

如果想同时查看本地分支和远程分支,可以使用:

git branch -a

示例:

* main
  dev
  remotes/origin/main
  remotes/origin/dev

这个命令在多人协作项目中特别常用,因为你可以快速确认本地和远程分别有哪些分支。

2.4 查看当前所在分支
#

除了 git branch,也可以使用:

git status

示例:

On branch main
nothing to commit, working tree clean

这表示当前位于 main 分支,并且工作区是干净的。


3. 创建 Git 分支
#

创建分支是 Git 分支管理中最常见的操作之一。

3.1 创建新分支
#

使用下面的命令创建一个新分支:

git branch 分支名

例如:

git branch feature/login
笔记

这个命令只会创建分支,不会自动切换到新分支。

创建后可以执行:

git branch

查看分支是否创建成功。

3.2 创建并切换到新分支
#

实际开发中,更常用的是创建分支后立即切换过去。

推荐使用:

git switch -c 分支名

例如:

# 创建新分区feature/login,并切换到feature/login分支
git switch -c feature/login

这条命令等价于:

git branch feature/login
git switch feature/login

如果你使用的是旧版本 Git,也可以使用:

git checkout -b feature/login

不过现在更推荐使用 git switch,因为它的语义更清晰,专门用于切换分支。

3.3 从指定提交创建分支
#

有时候你不想从当前分支最新提交创建分支,而是想从某个历史提交创建分支,可以这样写:

git switch -c 分支名 commit-id

例如:

git switch -c fix/old-version a1b2c3d

这表示从 a1b2c3d 这个提交创建一个新分支。

3.4 创建分支后推送到远程
#

本地创建分支后,如果要让其他人也能看到,需要推送到远程仓库:

git push -u origin feature/login

其中:

origin:远程仓库名称
feature/login:要推送的分支名
-u:建立本地分支和远程分支的关联

建立关联后,以后在这个分支上可以直接使用:

git push

或:

git pull

不需要每次都写完整远程分支名。

4. 切换 Git 分支
#

切换分支表示从当前开发线切换到另一条开发线。

4.1 使用 git switch 切换分支
#

# 切换到 dev 分支
git switch dev

# 确认当前分支
git branch

4.2 使用 git checkout 切换分支
#

旧写法是:

git checkout 分支名

git checkout 既可以切换分支,也可以恢复文件,功能比较多,容易让初学者混淆。因此现在更推荐使用 git switch 来切换分支。

4.3 切换分支前要注意什么?
#

切换分支前,最好先执行:

git status

查看工作区是否有未提交的修改。

如果当前分支有未提交修改,Git 可能会阻止切换分支,避免你的修改被覆盖。

常见处理方式有三种:

第一种,提交当前修改:

git add .
git commit -m "保存当前修改"

第二种,临时保存修改:

git stash

第三种,确认不需要这些修改后丢弃:

git restore .

在真实项目中,不建议在不清楚修改内容的情况下直接丢弃代码。切换分支前先看 git status 是一个很好的习惯。


5. 重命名 Git 分支
#

分支名称写错了,或者团队命名规范变化了,可以对分支进行重命名。

5.1 重命名当前分支
#

如果你当前就在需要重命名的分支上,可以使用:

git branch -m 新分支名

5.2 重命名指定分支
#

如果你不在目标分支上,也可以指定旧分支名和新分支名:

git branch -m 旧分支名 新分支名

5.3 重命名远程分支
#

Git 没有直接“重命名远程分支”的单个命令。通常做法是:

# 先重命名本地分支:
git branch -m old-branch new-branch

# 然后删除远程旧分支:
git push origin --delete old-branch

# 再推送新的分支名:
git push -u origin new-branch

如果这个分支已经被多人使用,重命名前最好先和团队确认,避免影响其他人的本地分支。


6. 删除 Git 分支
#

当一个功能分支已经合并,或者某个临时分支不再需要时,可以删除它。

6.1 安全删除本地分支
#

删除已经合并或不再需要的本地分支:

git branch -d 分支名
笔记

-d 是安全删除。如果这个分支还没有被合并,Git 会提示错误,防止误删代码

6.2 强制删除本地分支
#

如果确定分支不需要了,即使没有合并,也可以强制删除:

git branch -D 分支名
笔记

-D 会强制删除分支,使用前要确认分支上的提交不再需要

6.3 删除远程分支
#

删除远程分支使用:

git push origin --delete 分支名

删除远程分支后,其他人的本地仓库可能还会看到旧的远程分支引用,可以执行:

git fetch -p

清理已经不存在的远程分支引用。

6.4 删除分支前建议先确认是否已合并
#

删除分支前,可以先查看它是否已经合并:

git branch --merged

如果分支已经合并到当前分支,删除风险较低。

如果没有合并,执行:

git branch --no-merged

可以查看尚未合并的分支。


7. 常见分支类型
#

好的分支命名可以让团队协作更清晰。看到分支名,就能大致知道这个分支是做什么的。

7.1 实际项目中常见的分支命名包括:
#

main:主分支,通常保存稳定代码
dev:开发分支,日常开发集成使用
feature/xxx:新功能分支
bugfix/xxx:Bug 修复分支
hotfix/xxx:线上紧急修复分支
release/xxx:发布准备分支
test/xxx:测试或实验分支

7.2 分支命名建议
#

推荐遵循以下规则:

使用英文小写 单词之间用短横线连接 使用类型前缀,比如 feature、bugfix、hotfix 名称要能表达分支用途 避免使用无意义名称,比如 test1、abc、new

推荐示例:

feature/user-login
bugfix/cart-price
hotfix/payment-timeout
release/v1.2.0

不推荐示例:

test
new
aaa
zhangsan
fix

清晰的分支命名能降低沟通成本,尤其适合多人协作项目。


10. Git 分支管理最佳实践
#

Git 分支管理不需要复杂,日常开发中记住几个原则即可。

10.1 主分支保持稳定
#

mainmaster 分支通常用于保存稳定代码,不建议直接在主分支上开发新功能。

推荐流程:

从 main 创建功能分支
在功能分支开发
测试通过后合并回 main
合并完成后删除无用分支

10.2 一个分支只做一件事
#

每个分支最好只对应一个功能、一个 Bug 或一次发布任务。

推荐:

feature/login
bugfix/cart-price
hotfix/payment-timeout

不推荐:

feature/login-and-payment-and-profile

这样可以让代码审查、测试和回滚都更清晰。

10.3 合并后及时清理分支
#

功能分支合并后,如果确认不再使用,可以删除本地和远程分支。

# 删除本地分支:
git branch -d feature/login

# 删除远程分支:
git push origin --delete feature/login

10.4 删除前先确认是否已合并
#

删除分支前建议先查看:

# 查看已合并分支
git branch --merged

未合并的分支不要随意强制删除,避免丢失提交。


11. Git 分支管理常见问题
#

11.1 Git 创建分支后会自动切换吗?
#

不会。

git branch feature/login
# 只创建分支,不会切换分支。

git switch -c feature/login
# 创建并切换分支

11.2 git switch 和 git checkout 有什么区别?
#

git switch 专门用于切换分支,语义更清晰。

git checkout 功能更多,既能切换分支,也能恢复文件。

初学者更推荐使用 git switch

11.3 删除分支会删除代码吗?
#

如果分支已经合并,删除通常是安全的。

如果分支没有合并,强制删除可能导致提交不容易找回。

删除前建议先执行:

# 查看已合并分支
git branch --merged

11.4 远程分支已经删除,本地还显示怎么办?
#

执行:

git fetch -p

它会清理本地已经失效的远程分支引用。

Git Mastery - 系列专栏
✦ 9: 本文