主要对GitFlow多人协作开发时的工作流程做份学习记录。因日常开发多用SourceTree软件,所以记录基于本软件,GUI界面操作,对于GIT命令只熟悉部分简单操作,尚有改进空间,以后多多努力!!
环境
环境:
- 实体机器Win7 64bit
- SourceTree 2.6.10.0
- 代码仓库:码云(https://gitee.com/)
分支介绍
首先了解下GitFlow中所使用到的各分支功能及特性。之后再进行操作流程介绍。
master分支
master分支:生产环境分支。
是保证系统在生产环境时能够稳定正常进行,用于记录每个正式发布版本。因此该分支不允许开发者直接进行修改和提交。
允许合并的分支:release分支(发布分支)、hotfix(修复BUG分支)。
初始代码来源:仓库创建时
创建时机:仓库初始化
develop分支
develop分支:开发环境分支
开发过程中代码中心分支,保持开发过程中的最新代码。一般情况下,该分支也不允许开发者直接进行修改和提交。开发过程中以develop分支作为起点,进行新功能的开发和BUG修正。
允许合并的分支:feature分支(功能分支)、release分支(发布分支)、hotfix(修复BUG分支)。
初始代码来源:master分支
创建时机:master创建完成
feature分支
feature分支:功能分支
衍生与develop分支,主要用于多人协作开发场景或探索性功能验证场景。feature分支可以创建多个,功能实现后进行代码合并至develop。本分支属于临时分支,目的完成后可以删除分支。
允许合并的分支:不允许任何分支合并
初始代码来源:推荐develop分支
创建时机:需要开发新的功能
完成操作:合并至develop分支
release分支
release分支:发布版本分支
该分支基于develop分支,当产品编码完成后,发布到release分支。测试中发现BUG可以在本分支进行修复,修复完成后合并到develop分支。本分支属于临时分支,目的完成后可以删除分支。
允许合并的分支:不允许任何分支合并
初始代码来源:推荐develop分支
创建时机:线上代码满足发布要求
完成操作:合并至master/develop分支
hotfix分支
hotfix分支:BUG修复分支,基于master分支,主要用于对外发布的分支,收到BUG反馈后在此分支进行修复,修复完成后分别合并入develop分支和master分支。本分支属于临时分支,目的完成后可以删除分支。
允许合并的分支:不允许任何分支合并
初始代码来源:master分支
创建时机:发布版本出现BUG
完成操作:合并至master/develop分支
SourceTree上流程
1. 初始化仓库
首先Clone一个仓库到本地,远程仓库放在码云上。Clone后,SourceTree上会出现master分支。
初始化GitFlow
初始化GitFlow后会出现develop分支。develop分支和master分支为项目中的永久分支。开发者开发过程中的操作均围绕这两个分支进行派生和合并。正常情况下不允许开发人员直接在develop和master两个分支上直接进行写操作。初始化后,项目的分支除了这两个永久分支外,还有feature(功能分支)、release(版本发布分支)、hotfix(修复补丁分支)三种临时性分支。
2. 添加功能分支
2.1添加功能分支模拟
添加功能分支(add_new_feature_1),并进行三次功能文件提交(提交至本地,不推送远程origin)。
选择 Git工作流-完成任务,将功能分支代码合并入本地develop,并推送至远程(origin)。
2.2多人协作开发时添加功能分支模拟
a、创建第一个功能分支(update_feature_1)对上个功能里面的add_feature_1进行修改,并进行第一次提交。
b、返回develop,创建第二个功能分支(add_feature_1)对上个功能里面的add_feature_1进行修改,并进行第一次提交。
c、循环以上步骤,分别对两个功能分支进行提交操作
d、分别完成功能分支,合并入develop。如果有冲突解决冲突后,再推送远程。
发生冲突问题:
出现<<<<<<< HEAD、=======、>>>>>>> feature/F_feature_2,HEAD和=号之间表示当前分支下的代码,=号和>>>>>>> feature/F_feature_2之间表示要合并的分支下的代码,>>>>>>> feature/F_feature_2表示了要合并的分支的分支名称。
根据实际的情况,进行修改。一定要确保修改后的文件可以完成合并之前的全部功能。
3. 发布版本分支
在develop下简历发布分支(realeae分支),进入预发布测试阶段。BUG直接在该分支上处理。(该分支是否提交至远程分支origin,目前还未理解,此处添加一个tip。预发布分支(类似测试分支)一般部署在站点上,供测试人员进行测试和其他人员体验,而站点上的代码是从git拉取,及(origin/realease/pre_v1.0.0)分支上拉取。所以我暂定此处上传至远程)
合并入develop和master分支
/
参考文档:
https://www.jianshu.com/p/8a3988057d0f
https://www.jianshu.com/p/b89851446592
https://blog.csdn.net/crjmail/article/details/78166923