GITFLOW流程规范

GIT的使用非常的灵活,但是灵活就导致在使用的过程中有各种各样的情况,根据现有项目组的情况,使用GITFLOW流程规范作为项目开发流程规范。

该规范参考地址:

深入理解学习Git工作流

Gitflow工作流

Gitflow工作流通过为功能开发、发布准备和维护分配独立的分支,让发布迭代过程更流畅。严格的分支模型也为大型项目提供了一些非常必要的结构。

Gitflow工作流定义了一个围绕项目发布的严格分支模型。虽然比功能分支工作流复杂几分,但提供了用于一个健壮的用于管理大型项目的框架。

Gitflow工作流没有用超出功能分支工作流的概念和命令,而是为不同的分支分配一个很明确的角色,并定义分支之间如何和什么时候进行交互。
除了使用功能分支,在做准备、维护和记录发布也使用各自的分支。当然你可以用上功能分支工作流所有的好处:Pull Requests、隔离实验性开发和更高效的协作。


工作方式

Gitflow工作流仍然用中央仓库作为所有开发者的交互中心。和其它的工作流一样,开发者在本地工作并push分支到要中央仓库中。

历史分支

相对使用仅有的一个master分支,Gitflow工作流使用2个分支来记录项目的历史。master分支存储了正式发布的历史,而develop分支作为功能的集成分支。
这样也方便master分支上的所有提交分配一个版本号。

剩下要说明的问题围绕着这2个分支的区别展开。


功能分支

每个新功能位于一个自己的分支,这样可以push到中央仓库以备份和协作。
但功能分支不是从master分支上拉出新分支,而是使用develop分支作为父分支。当新功能完成时,合并回develop分支。
新功能提交应该从不直接与master分支交互。

注意,从各种含义和目的上来看,功能分支加上develop分支就是功能分支工作流的用法。但Gitflow工作流没有在这里止步。


发布分支

一旦develop分支上有了做一次发布(或者说快到了既定的发布日)的足够功能,就从develop分支上fork一个发布分支。
新建的分支用于开始发布循环,所以从这个时间点开始之后新的功能不能再加到这个分支上——
这个分支只应该做Bug修复、文档生成和其它面向发布任务。
一旦对外发布的工作都完成了,发布分支合并到master分支并分配一个版本号打好Tag。
另外,这些从新建发布分支以来的做的修改要合并回develop分支。

使用一个用于发布准备的专门分支,使得一个团队可以在完善当前的发布版本的同时,另一个团队可以继续开发下个版本的功能。

这也打造定义良好的开发阶段(比如,可以很轻松地说,『这周我们要做准备发布版本4.0』,并且在仓库的目录结构中可以实际看到)。

常用的分支约定:

  • 用于新建发布分支的分支: develop
  • 用于合并的分支: master
  • 分支命名: release-* 或 release/*

维护分支

维护分支或说是热修复(hotfix)分支用于生成快速给产品发布版本(production releases)打补丁,这是唯一可以直接从master分支fork出来的分支。

修复完成,修改应该马上合并回master分支和develop分支(当前的发布分支),master分支应该用新的版本号打好Tag。

为Bug修复使用专门分支,让团队可以处理掉问题而不用打断其它工作或是等待下一个发布循环。
你可以把维护分支想成是一个直接在master分支上处理的临时发布。


最新文章

  1. linux基础-第六单元 用户、群组和权限
  2. ThinkPHP在Ubuntu上 : mkdir的使用
  3. jQuery库中的变量$和其它类库的变量$冲突解决方案
  4. Jquery数组操作
  5. css包含块containing block
  6. CodeForces 675E Trains and Statistic
  7. 【转】从1到N这N个数中1的出现了多少次?
  8. 201521123121 《JAVA程序设计》第8周学习总结
  9. 【读书笔记】A Swift Tour
  10. (三)SpringBoot基础篇- 持久层,jdbcTemplate和JpaRespository
  11. jxa快速入门,Javascript已加入AppleScript全家桶
  12. tornado框架设置
  13. iOS - User Agent 的应用和设置
  14. 移动一根火柴使等式成立js版本(递归)
  15. perl6 中将 字符串 转成十六进制
  16. 037 SparkSQL ThriftServer服务的使用和程序中JDBC的连接
  17. LDAP落地实战(四):Jenkins集成OpenLDAP认证
  18. 企业案例 【故障修复】mysql主从故障解决过程
  19. Java优化技巧
  20. js根据经纬度计算两点距离

热门文章

  1. [Linux系统] (6)LVS负载均衡
  2. TTTTTTTTTTTT CF 653D 送邮递员
  3. Fermat小定理的证明
  4. Java内存模型之可见性问题
  5. avue你繁琐的表格、表单、树等组件开发的解脱工具,了解一下?
  6. redis-sentinel 主从复制高可用
  7. 一次高IO下的GC分析之旅
  8. tensorflow实现LeNet-5模型
  9. EBS 页面影藏“关于此页”
  10. weblogic报:java.lang.LinkageError: loader constraint violation in interface itable initialization