版本命名
语义化版本(Semantic Versioning):
主版本号.次版本号.修订号(MAJOR.MINOR.PATCH)
* 开发版 develop 主版本号.次版本号.修订号-dev 例如:1.2.2-dev
* 预发布版 release 主版本号.次版本号.修订号-beta 例如:1.2.2-beta
* 发布版 master 主版本号.次版本号.修订号 例如:v1.2.2
分支命名策略
长期分支有两个 master 和 develop
主分支 master:
负责记录上线版本的迭代,该分支代码与线上代码是完全一致的。不允许随意的往该分支合并代码。
开发分支 develop:
该分支记录相对稳定的版本,所有的feature分支都从该分支创建。
其它分支为短期分支,其完成功能开发之后需要删除
特性(功能)分支 feature/*:
开发新的功能、完善已有功能、bug修复等日常开发任务使用特性分支,不同的功能创建不同的功能分支,功能分支开发完成并自测通过之后,需要合并到 develop 分支,之后删除该分支。
预发布分支 release/*:
用于代码上线准备,该分支从develop分支创建,创建之后由测试同学发布到测试环境进行测试,测试过程中发现bug需要开发人员在该release分支上进行bug修复,所有bug修复完后,在上线之前,需要合并该release分支到master分支和develop分支。
热修复分支 hotfix/*:
紧急bug修复分支,该分支只有在紧急情况下使用,从master分支创建,用于紧急修复线上bug,修复完成后,需要合并该分支到master分支以便上线,同时需要再合并到develop分支。
工作流程
第一步
在github中创建一个新的仓库,这时候项目是空的,而且只有一个master分支
第二步
第一个开发人员进来了,他在本地创建一个develop分支,并且提交到远程
git branch develop
git push -u origin develop
现在线上就有两个分支master 和 develop 现在这两个分支里面都是空的
第三步
一、二步完成后,任何一个参与该项目的开发人员首先要做的就是从develop分支上切一个新分支进行功能开发
git checkout -b <本地分支名 feature/***> <origin/develop>
或者
git fetch origin 远程分支名:本地分支名
git branch --set-upstream-to=origin/远程分支名 本地分支名
然后进行开发,开发差不多,想提交一下
git status
git add
git commit
第四步
经过第三步,提交了几次后,感觉差不多了,就可以合并到develop分支
git pull origin develop //先拉取develop中的代码,因为有可能别人已经往上提交过代码了
git checkout develop//切到develop分支
git merge <feature/**>//合并feature/**中的代码到develop中
git push //提交到develop远程分支上
git branch -d feature/** //删除本地的分支
第五步
某一个开发人员想发布,但是其他人员还在进行开发,先不管别人,他先建立一个新的分支release-1.1.2-beta做发布准备,测试组介入测试,测试中发现问题,开发组在该分支进行修复,功能完善后将该分支合并到master和develop分支,删除该分支
git checkout -b <本地分支名realse-0.1> <远程分支名develop>
//注意这个realse-tagNo分支的功能是对发布的代码进行改善的地方
创建这个分支相当于测试环境修改,改好后就需要更新master和develop,然后删除分支
git checkout master//切到master分支
git merge release-0.1//将release分支合到master上
git push//将合完的代码提交到远程master
git checkout develop//切到develop分支
git merge release-01//将release分支上的代码合到develop分支上
git push//合完的代码推送到远程的develop分支
git branch -d release-01//删除本地release分支
第六步
线上环境发现bug了,从master分支检出一个新分支hotfix/xxx,修改完成后测试组介入测试,如果测试发现bug,开发组在该分支修改,功能完善后合并代码到master和develop分支,然后删除该分支。
git checkout -b hotfix/xxx master//从master分支上新建分支
然后开始改bug,改完后
git checkout master//切回master分支
git merge hotfix/xxx//将改完bug后的代码合并到master
git push
改完bug的代码还要合到develop中
git checkout develop
git merge hotfic/xxx
git push
git branch -d hotfix/xxx