Git Flow 是一种 Git 工作流,通过为功能开发、发布准备和维护分别设立独立的分支,让发布迭代过程更流畅。
安装 Git Flow:
安装并初始化 Git Flow 后,Git 还是可以像之前一样工作,只是会拥有一些扩展命令,这些命令会在一个预定义的顺序下自动执行多个操作。
Git Flow 并不是要替代 Git,它仅仅是把标准的 Git 命令用脚本组合了起来。
- 安装 Git Flow:
npm install git-flow
。 - 在项目的根目录下执行
git flow init
进行初始化,初始化后将默认存在 master 分支和 develop 分支。
Git Flow 中的分支:
主分支 master:
是自动建立的。该分支为只读唯一分支,只能从其他分支进行合并,不能在此分支上进行修改。所有提供给用户使用的正式版本,都在这个主分支上发布。
从 master 分支上可建立 develop 分支和 hotfix 分支,接收来自 release 分支和 hotfix 分支的合并。
补丁分支 hotfix:
基于 master 分支克隆而来。主要用于对线上的版本进行 BUG 修复。修补结束以后,再合并进 master 和 develop 分支。它的命名,可以采用 hotfix-*
的形式。
- 开始一个 hotfix:
git flow hotfix start 分支名
。这个命令会从 master 分支建立一个新的 hotfix 分支,并切换到 hotfix 分支上。 - 完成一个 hotfix:
git flow hotfix finish 分支名
。这个命令会将 hotfix 分支合并到 develop 和 master 分支中,并切换到 master 分支上,然后删除 hotfix 分支。 - 推送 hotfix 到远程仓库:
git flow hotfix publish 分支名
。 - 删除 hotfix:
git flow hotfix delete 分支名
。
开发分支 develop:
基于 master 分支克隆而来。该分支为只读唯一分支,只能用来合并其他分支。包含所有要发布到下一个 release 的代码。
从 develop 分支上可建立 feature 分支和 release 分支,接收来自 feature 分支、 release 分支和 hotfix 分支的合并。
功能分支 feature:
基于 develop 分支克隆而来。主要用于新需求新功能的开发。功能开发完毕后需要合并到 develop 分支。功能分支的名字,可以采用 feature-*
的形式命名。
- 开始一个 feature:
git flow feature start 分支名
。这个命令会从 develop 分支建立一个新的 feature 分支,并切换到 feature 分支上。 - 完成一个 feature:
git flow feature finish 分支名
。这个命令会将 feature 分支合并到 develop 分支中,并切换到 develop 分支上,然后删除 feature 分支。 - 推送 feature 到远程仓库:
git flow feature publish 分支名
。 - 删除 feature:
git flow feature delete 分支名
。
预发布分支 release:
基于 develop 分支克隆而来。主要用于提交给测试人员进行功能测试,测试过程中发现的 BUG 在本分支进行修复,修复完成后上线需要合并到 develop 和 master 分支。它的命名,可以采用 release-*
的形式。
- 开始一个 release:
git flow release start 分支名
。这个命令会从 develop 分支建立一个新的 release 分支,并切换到 release 分支上。 - 完成一个 release:
git flow release finish 分支名
。这个命令会将 release 分支合并到 develop 和 master 分支中,并切换到 master 分支上,然后删除 release 分支。 - 推送 release 到远程仓库:
git flow release publish 分支名
。 - 删除 release:
git flow release delete 分支名
。
常见的 Git Flow 工作流程:
- 初始化项目为 git flow,默认创建 master 分支。
- 从 master 分支上拉取一个 develop 分支作为主开发分支。
- 从 develop 分支上拉取 feature 分支进行功能开发,多个开发人员可以拉取多个 feature 同时进行并行开发,互不影响。
- feature 分支开发完成后,合并到 develop 分支。
- 从 develop 分支拉取一个 release 分支作为预发布分支;release 分支上发现 BUG,在本分支进行修复;通过测试后,合并 release 分支到 develop 和 master 分支。
- 上线之后如果发现 BUG,则从 master 分支上拉取 hotfix 分支进行 BUG 修改;hotfix 分支代码通过测试上线后,合并 hotfix 分支到 develop 和 master 分支。