Git Flow是基于Git的代码协作的一种最佳实践,大概10年前提出,现在已被很多软件团队和组织大规模采用。原作者Vincent Driessen在5月份更新了对Git Flow的最新思考和实践。值得细细品味。
Git Flow简要介绍
Git Flow是构建在Git之上的组织软件开发活动的模型,是基于Git的软件开发最佳实践。核心是为git的不同分支定义不同的角色。Git Flow中预设了主分支(包括master和develop分支)和辅助分支(包括feature、release和bugfix分支)。
主分支用来进行软件开发和部署,是长期存在的分支。
辅助分支用于特定软件特性开发、bug修复和发版,是临时存在的。
可以参考原文仔细理解。
Git Flow与Web开发
按照作者最新的更新说明,其实Git Flow的提出主要是为了比较传统的软件(大概2010年左右吧),那时的软件以非Web应用为主,具体特点是要发多个版本,老版本还需要维护。但是现在的web应用越来越多了,Web应用是持续的发布的(小步快跑),并且弱化了版本的概念(线上只有一个版本),所以Web应用的开发场景是和Git Flow的提出有区别的。所以,作者还是建议对于Web应用,最好还是采用更简单的协作流程,比如GitHub Flow(Pull Request)。
后记,为什么要写这么一篇随笔了?当对一个技术或者方法没有根本性的了解时,随着大环境对其的采纳,很容易陷入教条主义(原文作者在最新的更新中写道了这一点),以为这种技术或者方法是万能药。但是软件开发中没有银弹。一定要在充分理解的情况下掌握其应用场景。但是说起来容易,实践起来真的很难。Git Flow就曾经让我困惑,对其在Web领域的适用性有所怀疑,现在作者亲自这么说了,感觉有一种豁然开朗的感觉。