前言
文章首发于Noah Sun’s Home Git开发规范参考
,转载请注明出处,谢谢!
分支管理
git 的分支管理功能非常强大,为了提高效率、避免分支混乱,我们参考git flow的开发流程规范或者可以直接使用git flow工具。
分支构成
主要分支
master分支:永远处在即将发布(production-ready)状态;
develop分支:为开发分支,始终保持最新完成以及bug修复后的代码。
辅助分支
feature分支:开发新功能的分支,基于develop,开发完成后merge回develop;
release分支:准备要发布版本的分支(测试环境用的),用来修复SIT(System Integration Testing) bug;基于develop分支,完成后merge回develop和master分支;
hotfix分支:修复线上(master)紧急bug,等不及release分支就必须马上上线;基于master分支,完成后merge回master和develop分支。
命名规范约定如下:
- feature分支命名:feature/name
- release分支命名:release/name
- hotfix分支命名:hotfix/name
常见的开发流程
增加新功能
(develop)$: git checkout -b feature/xxx # 从develop建立功能分支
(feature/xxx)$: blabla # 开发
(feature/xxx)$: git add xxx
(feature/xxx)$: git commit -m 'commit comment'
(develop)$: git merge feature/xxx --no-ff # 把功能分支合并到develop
修复紧急bug
(master)$: git checkout -b hotfix/xxx # 从master建立hotfix分支
(hotfix/xxx)$: blabla # 开发
(hotfix/xxx)$: git add xxx
(hotfix/xxx)$: git commit -m 'commit comment'
(master)$: git merge hotfix/xxx --no-ff # 把hotfix分支合并到master,并上线到生产环境;注意,非管理员请用Merge Request;
(develop)$: git merge hotfix/xxx --no-ff # 把hotfix分支合并到develop,同步代码
测试环境发布测试
(develop)$: git checkout -b release/x.y.z # 从develop建立预发布分支
(release/x.y.z)$: blabla # 开发或者从其他feature分支合并代码
(release/x.y.z)$: git merge develop --no-ff # 把develop分支合并到release/x.y.z,然后在测试环境拉取并测试
生产环境上线
(master)$: git merge release/x.y.z --no-ff # 把release/x.y.z或者develop测试好的代码合并到master
(master)$: git tag -a 0.1.0 -m 'xxx' # 给版本命名,打Tag
注意:这一步由master管理员做,普通开发人员合并代码请用Merge Request。
Tag管理
Tag生成时间
master分支每次发布时,必须打tag。
Tag命名规范
版本格式:主版本号.次版本号.修订号,如:1.0.1。
版本号递增规则如下:
- 主版本号:当你做了不兼容的 API 修改;项目架构发生巨大变化;
- 次版本号:当你做了向下兼容的功能性新增;
- 修订号:当你做了向下兼容的问题修正;小的修改,如代码格式修正等。