Skip to content

workflow-工作流

Git Flow 是一种广泛使用的 Git 分支管理策略,指导和支持多人协作和软件开发的不同阶段

分支介绍

主要分支

  1. 主分支(Master)

    • 生产环境中运行的代码
  2. 开发分支(Develop)

    • 此分支包含下一个发布周期中的代码。
    • 所有功能分支都是基于此分支创建的,并最终合并回来。
    • 当准备好发布新版本时,开发分支的代码会合并到主分支Master。

辅助分支

  1. 功能分支(Feature branches)

    • 从开发分支Develop分出,用于开发新功能或改进。
    • 命名通常以 feature/ 开头。
    • 开发完成后,合并回开发分支。
  2. 版本发布分支(Release branches)

    • 开发分支分出,用于准备即将发布的版本。
    • 命名通常以 release/ 开头。
    • 在此分支上,可以进行最后的调整(如 bug 修复、文档改进等)。
    • 一旦准备就绪,它会合并到主分支和开发分支。
  3. 修补分支(Hotfix branches)

    • 从主分支分出,用于快速修补生产环境中的漏洞。
    • 命名通常以 hotfix/ 开头。
    • 修复完成后,合并回主分支和开发分支。

工作流程

  1. 开发新功能

    • 从开发分支创建新的功能分支。
    • 功能开发完成后,合并回开发分支。
  2. 准备发布

    • 从开发分支创建发布分支。
    • 进行测试、文档编写和其他准备工作。
    • 修复在此阶段发现的问题。
    • 完成后,发布分支合并到主分支和开发分支。
  3. 修补漏洞

    • 从主分支创建修补分支。
    • 完成修补后,合并回主分支和开发分支。
  4. 发布版本

    • 将主分支上的代码部署到生产环境。

优缺点

优点

  • 结构清晰:每种类型的工作都有专门的分支,使流程易于管理。
  • 支持并行开发:多个功能可以同时开发,互不影响。
  • 容易维护:可以轻松地回滚整个功能。
  • 持续发布:可以定期发布新版本,同时维护和修补旧版本。

缺点

  • 复杂性:对于小团队或小项目,Git Flow 可能过于复杂。
  • 多个长期分支:需要维护多个长期分支,可能导致分支混乱。

示例流程

1. 初始化 Git Flow

首先,你需要在你的 Git 仓库中初始化 Git Flow。这可以通过 Git Flow 的命令行工具完成,但也可以手动完成。

bash
git flow init

此命令将会创建必要的分支并设置合适的默认配置。

2. 开发新功能

假设你要开发一个新功能,比如用户认证。

  • 创建功能分支

    bash
    git flow feature start user-authentication

    这将基于 develop 分支创建一个名为 feature/user-authentication 的新分支。

  • 开发功能

    在此分支上进行所有开发工作,比如编写代码、测试等。

  • 完成功能开发

    bash
    git flow feature finish user-authentication

这将把 feature/user-authentication 分支的更改合并回 develop 分支,并删除功能分支。

3. 准备发布新版本

当你准备发布一个新版本时(比如 1.0.0):

  • 创建发布分支

    bash
    git flow release start 1.0.0

    这将从 develop 分支创建一个名为 release/1.0.0 的发布分支。

  • 准备发布

    在此分支上进行最后的测试,修复任何小问题,并更新文档。

  • 完成发布

    bash
    git flow release finish 1.0.0

    这将把 release/1.0.0 分支的更改合并到 masterdevelop 分支,同时创建一个标签 1.0.0

4. 紧急修补

如果你在生产环境中发现了一个紧急的 bug,你需要创建一个修补分支:

  • 创建修补分支

    bash
    git flow hotfix start emergency-fix

    这将从 master 分支创建一个名为 hotfix/emergency-fix 的修补分支。

  • 修补并测试

    在此分支上进行修补工作并进行测试。

  • 完成修补

    bash
    git flow hotfix finish emergency-fix

    这将把 hotfix/emergency-fix 分支的更改合并到 masterdevelop 分支,并创建一个新的标签(例如 1.0.1)。

5. 推送更改到远程仓库

在每个阶段完成后,不要忘记将更改推送到远程仓库:

bash
git push origin develop
git push origin master
git push --tags

根据具体情况,可能还需要额外的 Git 操作,比如在合并分支前进行代码审查和合并请求(Pull Request)