Skip to content

第5章:分支管理

5.1 分支核心概念

什么是分支

分支是 Git 中非常重要的概念,它允许你在一个独立的环境中开发新功能或修复 bug,而不会影响主代码库。

通俗讲解

  • 想象一下,你正在写一本书,主分支(master/main)是已经完成的章节
  • 当你想写一个新章节时,你创建一个新的分支,在这个分支上进行写作
  • 当新章节完成后,你可以将它合并回主分支
  • 这样,主分支始终保持稳定,而你可以在分支上自由实验

分支的作用

  1. 隔离开发:不同功能可以在不同分支上独立开发,互不干扰
  2. 并行开发:多个开发者可以同时在不同分支上工作
  3. 实验性功能:可以在分支上尝试新想法,失败了也不会影响主分支
  4. Bug 修复:可以在分支上修复 bug,然后合并回主分支
  5. 版本发布:可以为每个版本创建分支,方便后续维护

5.2 分支基础命令

git branch:查看、创建、删除分支

功能:管理分支(查看、创建、删除)

用法

bash
# 查看本地分支
git branch

# 查看远程分支
git branch -r

# 查看所有分支(本地和远程)
git branch -a

# 创建新分支
git branch <分支>

# 删除分支
git branch -d <分支>

# 强制删除分支(即使有未合并的修改)
git branch -D <分支>

# 重命名分支
git branch -m <旧分支> <新分支>

示例

bash
# 查看本地分支
git branch

# 创建新分支
git branch feature-branch

# 删除分支
git branch -d feature-branch

git checkout / git switch:切换分支

git checkout

功能:切换到指定分支

用法

bash
# 切换到指定分支
git checkout <分支>

# 创建并切换到新分支
git checkout -b <分支>

# 切换到上一个分支
git checkout -

git switch(Git 2.23+)

功能:切换到指定分支(较新的命令)

用法

bash
# 切换到指定分支
git switch <分支>

# 创建并切换到新分支
git switch -c <分支>

# 切换到上一个分支
git switch -

示例

bash
# 切换到 main 分支
git checkout main
# 或
git switch main

# 创建并切换到新分支
git checkout -b feature-branch
# 或
git switch -c feature-branch

git checkout -b:创建并切换分支

功能:创建一个新分支并立即切换到该分支

用法

bash
# 创建并切换到新分支
git checkout -b <分支>

# 从指定分支创建并切换到新分支
git checkout -b <新分支> <源分支>

示例

bash
# 从当前分支创建并切换到新分支
git checkout -b feature-login

# 从 main 分支创建并切换到新分支
git checkout -b feature-login main

5.3 分支合并

git merge:合并分支

功能:将指定分支的修改合并到当前分支

用法

bash
# 合并指定分支到当前分支
git merge <分支>

# 合并时创建一个新的合并提交
git merge --no-ff <分支>

参数说明

  • --no-ff:强制创建一个新的合并提交,即使可以快进合并
  • --ff-only:只进行快进合并,如果不能快进合并则失败

示例

bash
# 切换到 main 分支
git checkout main

# 合并 feature-branch 到 main 分支
git merge feature-branch

两种合并场景

快进合并(Fast-forward Merge)

  • 当目标分支是当前分支的直接后代时
  • Git 会直接移动指针,不会创建新的合并提交
  • 优点:历史记录简洁
  • 缺点:无法看出分支的合并历史

三方合并(Three-way Merge)

  • 当目标分支和当前分支有不同的提交历史时
  • Git 会创建一个新的合并提交,包含两个分支的修改
  • 优点:保留分支的合并历史
  • 缺点:历史记录会有更多的合并提交

5.4 合并冲突解决

什么是合并冲突

当两个分支修改了同一个文件的同一部分时,Git 无法自动决定使用哪个版本,就会产生合并冲突。

冲突表现

当合并分支时,如果出现冲突,Git 会显示类似以下信息:

Auto-merging file.txt
CONFLICT (content): Merge conflict in file.txt
Automatic merge failed; fix conflicts and then commit the result.

解决冲突步骤

  1. 查看冲突文件

    bash
    git status
  2. 编辑冲突文件 冲突文件中会包含类似以下内容:

    <<<<<<<< HEAD
    这是当前分支的内容
    ========
    这是要合并的分支的内容
    >>>>>>>> feature-branch
    • <<<<<<< HEAD:当前分支的内容
    • =======:分隔符
    • >>>>>>> feature-branch:要合并的分支的内容
  3. 手动解决冲突 编辑文件,保留需要的内容,删除冲突标记

  4. 标记冲突已解决

    bash
    git add <冲突文>
  5. 完成合并

    bash
    git commit -m "Resolve merge conflict"

冲突解决示例

冲突文件示例

<<<<<<< HEAD
Hello from main branch
=======
Hello from feature branch
>>>>>>> feature-branch

解决后的文件

Hello from main branch
Hello from feature branch

完成合并

bash
git add file.txt
git commit -m "Resolve merge conflict"

冲突解决技巧

  1. 保持冷静:合并冲突是正常的,不要慌张
  2. 仔细阅读:认真阅读冲突标记两边的内容
  3. 理解意图:理解两个分支的修改意图
  4. 测试验证:解决冲突后,确保代码能正常运行
  5. 提交信息:在提交信息中说明冲突解决的内容

5.5 分支管理规范

分支命名规范

  • 主分支mainmaster
  • 开发分支develop
  • 功能分支feature/功能名称
  • bug 修复分支fix/bug 描述
  • 发布分支release/版本号
  • 热修复分支hotfix/问题描述

分支管理策略

Git Flow

  1. main:生产环境分支,保持稳定
  2. develop:开发分支,集成所有功能
  3. feature:功能分支,从 develop 分支创建
  4. release:发布分支,从 develop 分支创建
  5. hotfix:热修复分支,从 main 分支创建

GitHub Flow

  1. main:生产环境分支,保持稳定
  2. feature:功能分支,从 main 分支创建
  3. PR:通过 Pull Request 合并到 main 分支

新手必遵循的规范

  1. 不要直接修改主分支:所有修改都应该在分支上进行
  2. 定期合并主分支:在分支开发过程中,定期从主分支合并最新代码
  3. 及时删除无用分支:完成开发后,及时删除已合并的分支
  4. 保持分支清洁:每个分支只负责一个功能或修复
  5. 提交信息清晰:使用规范的提交信息,说明分支的目的

5.6 分支实操案例

创建分支、开发、合并、删除完整流程

操作步骤

  1. 查看当前分支

    bash
    git branch
  2. 创建并切换到新分支

    bash
    git checkout -b feature-login
  3. 在新分支上开发

    bash
    # 创建登录相关文件
    echo "Login functionality" > login.js
    git add login.js
    git commit -m "Add login functionality"
    
    # 修改现有文件
    echo "Import login module" >> app.js
    git add app.js
    git commit -m "Update app.js to import login module"
  4. 切换回主分支

    bash
    git checkout main
  5. 合并新分支到主分支

    bash
    git merge feature-login
  6. 删除已合并的分支

    bash
    git branch -d feature-login
  7. 查看提交历史

    bash
    git log --oneline --graph

分支冲突解决实战

操作步骤

  1. 创建并切换到 feature 分支

    bash
    git checkout -b feature-conflict
  2. 修改文件

    bash
    echo "Feature branch change" > conflict.txt
    git add conflict.txt
    git commit -m "Update conflict.txt in feature branch"
  3. 切换回 main 分支

    bash
    git checkout main
  4. 修改同一文件

    bash
    echo "Main branch change" > conflict.txt
    git add conflict.txt
    git commit -m "Update conflict.txt in main branch"
  5. 尝试合并 feature 分支

    bash
    git merge feature-conflict
  6. 解决冲突

    • 编辑 conflict.txt 文件
    • 解决冲突后提交
    bash
    git add conflict.txt
    git commit -m "Resolve merge conflict"
  7. 删除 feature 分支

    bash
    git branch -d feature-conflict

通过本章的学习,你已经掌握了 Git 分支的核心概念和操作。分支管理是 Git 的强大功能之一,它允许你在不影响主代码库的情况下进行开发和实验。接下来,我们将学习 Git 的远程仓库和团队协作。

© 2026 编程马·菜鸟教程 版权所有