Git Flow 是什么?
2010 年 5 月,在一篇名为 “A successful Git branching model” 的博文中,Vincent Driessen 介绍了一种构建在 Git 之上的软件开发模型。通过利用 Git 创建和管理分支的能力,为每个分支设定具有特定的含义名称,并将软件生命周期中的各类活动归并到不同的分支上,实现了软件开发过程不同阶段的相互隔离。这种软件开发的活动模型被 Vincent 称为 “Git Flow”。
Git Flow 流程图
这是 Vincent 博文中的 Git FLow 流程图,该图从右向左,从上到下看:
Git Flow Branches
Git Flow 的核心就是分支(Branch),通过在项目的不同阶段对 Branch 的不同操作(包括但不限于 create、merge、rebase 等)来实现一个完整的高效率的工作流程。Git Flow Branches 主要分为两大类:Main Branches(主分支) 和 Supporting branches(辅助分支)。 其中 Main Branches 中又包含了 Master 和 Develop,而 Supporting branches 中包含了 Feature、Release、Hotfix 以及其他自定义分支。
Master
master 分支上存放的是最稳定的正式版本,并且该分支的代码应该是随时可在生产环境中使用的代码(Production Ready state)。当一个版本开发完毕后,产生了一份新的稳定的可供发布的代码时,master 分支上的代码要被更新。同时,每一次更新,都需要在 master 上打上对应的版本号(tag)。
任何人不允许在 master 上进行代码的直接提交,只接受其他分支的合入。原则上 master 上的代码必须是合并自经过多轮测试且已经发布一段时间且线上稳定的 release 分支(预发分支)。