image.png 其次,项⽬存在三种短期分⽀。
功能分⽀(feature branch)
补丁分⽀(hotfi成全一棵树
x branch)
预发分⽀(relea branch)
⼀旦完成开发,它们就会被合并进develop或master,然后被删除。
GIT Flow总览
image.png
主分⽀Master
⾸先,代码库应该有⼀个、且仅有⼀个主分⽀。所有提供给⽤户使⽤的正式版本,都在这个主分⽀上发布。
对应到⽬前团队中使⽤的Gitlab,我们建议使⽤Master作为主分⽀并设置分⽀保护(默认设置),每次发布打上Tag,如: 0.1, 0.2或0.3
image.png
开发分⽀Develop
主分⽀只⽤来分布重⼤版本,⽇常开发应该在另⼀条分⽀上完成。我们把开发⽤的分⽀,叫做Develop。
image.png
如果想正式对外发布,就在Master分⽀上,对Develop分⽀进⾏"合并"(merge)。
由于Gitlab中默认对Master设置了分⽀保护(这个设置允许取消,如果存在假人模特
多⼈开发的项⽬,不建议取消),所以,当需要合并到Master的时候需要在Gitlab⾥提交合并申请,由项⽬管理员合并.
功能分⽀
功能分⽀属于临时性分⽀,⼀般合并完就会删除.
它是为了开发某种特定功能,从Develop分⽀上⾯分出来的。开发完成后,要再并⼊Develop。
功能分⽀的名字,可以采⽤feature-*的形式命名。
⽐如我们正在开发分⽀中开发⼩宇睿联的需求,这个过程中欺骗近义词
来了5M微循环的迁移任务,这个时候,就可以从Develop分⽀中拉出⼀个5M的功能分⽀进⾏开发,避免两个需求开发重叠.
可能⼤家还会有疑问,开发分⽀⾥已经有⼀部分⼩白羊座怎么挽回
宇睿联的内容,拉出来分⽀会不会有影响,这种情况可以评估下,如果存在冲突的话可以从Develop分⽀中向上回溯到⼀个合适的Commit拉出功能分⽀来.
某些情况下,新功能可能需要在线上的版本保持⼀致,可以从Master⾥拉出功能分⽀,也可以.
image.png
实际应⽤功能分⽀的时候,存在以下⼏种情况:
1. 正常迭代,周期性的功能需求
2. 产品型需求,这种需求的周期很长,需求和项⽬的主线有很⼤偏差,同时要求不跟着主板本迭代,如: 本地化部署
第⼀种情况,按照标准的feature分⽀⼯作流开展即可,不再赘述.
产品型需求
这种分⽀建议以production-分⽀定义,在功能迭代完成后直接在production-分⽀上拉出relea分⽀提测,测试完成后,合并回production分⽀,同芋头饭
时在production分⽀上打上tag.
由于这种分⽀并不合并到主⼲,所以上线的代码都体现在production分⽀上,如果线上有bug需要修复,在tag上拉出fixbug分⽀修复即替代的英文
可.
这种分⽀实际上相当于⼀个独⽴的项⽬进⾏迭代,和本⽂阐述的分⽀管理主旨并不相符.
[图⽚来不及画]
预发布分⽀
它是指发布正式版本之前(即合并到Master分⽀之前),我们可能需要有⼀个预发布的版本进⾏测试。