跳到主要内容

GitFlow

· 阅读需 2 分钟
Martin Pan
Software Engineer

Git Flow 是一种基于 Git 的分支管理工作流程模型,由 Vincent Driessen 在 2010 年提出。它为软件开发项目定义了严格的分支模型,适合有固定发布周期的项目。

一、分支类型与职责

1. 长期分支

  • master/main:存放正式发布的历史,所有在 master 分支上的 commit 都对应一个可发布的版本。
  • develop:用于集成功能分支,存放最新的开发成果,作为下一个发布版本的基础。

2. 临时分支

  • feature/:开发新功能的分支,从 develop 分支分出,完成后合并回 develop。
  • release/:准备发布新版本的分支,从 develop 分支分出,完成后合并回 master 和 develop。
  • hotfix/:修复生产环境紧急问题,从 master 分支分出,完成后合并回 master 和 develop。
  • support/(可选):长期维护的历史版本分支。

3. 分支命名规范

  • feature/xxx
  • release/xxx
  • hotfix/xxx
  • support/xxx

建议分支名简洁明了,能体现功能或修复内容。

二、常用命令

# 初始化 git flow
git flow init

# 新建功能分支
git flow feature start <name>
git flow feature finish <name>

# 新建预发布分支
git flow release start <version>
git flow release finish <version>

# 新建热修复分支
git flow hotfix start <version>
git flow hotfix finish <version>

三、工作流示意图

四、常见问题

Q: Git Flow 必须使用 git-flow 工具吗?
A: 不是必须的,git-flow 工具只是简化了操作,你可以手动按照 Git Flow 的原则管理分支。

Q: feature 分支需要 rebase 吗?
A: 可以但不必须。如果选择 rebase,应该在本地完成,避免已推送的分支被重写历史。

Q: 如何与远程仓库协作?
A: 每个功能/发布/热修复分支都可以推送到远程,便于团队协作和代码审查。

Q: 分支合并冲突多怎么办?
A: 建议及时合并 develop,保持分支同步,减少冲突。

Q: 适合小型项目吗?
A: 小型项目或快速迭代项目可以考虑简化分支策略,如 GitHub Flow。