Git规范:feature-xx、test、release分支
2023-04-11 本文已影响0人
___TheOne___
1. 常备分支
1.1 主分支: release。
在代码库中主分支有且仅有一个;所有提供给用户使用的正式版本,都基于这个主分支进行发布。
1.2 开发分支: test。
日常开发、公测验证在这个分支上完成。
2. 临时性分支
顾名思义,既然是‘临时性分支’,发布正式后都应该被删除。使得代码库的常设分支始终只有 release 和 test。
2.1 功能分支:
可采用 feature-*
的形式命名
使用步骤:
- 基于
主分支release
,在Gitlab新建一个远程分支origin/feature-A
; - 在idea中,
Fetch
一下; - 基于
origin/feature-A
分支,创建本地分支 feature-A
,在此分支中开发代码; - 代码本地自测完毕后,从
本地分支 feature-A
commit代码到origin/feature-A
中; - 发布公测验证:
切换分支到本地 开发分支test
,如果需要则从origin/test
中pull
一下最新代码;
然后merge origin/feature-A
,如果有代码冲突解决一下;
然后从本地 开发分支test
commit 代码到origin/test
中
然后基于开发分支test
进行打包,发布公测即可。 - 公测验证无误,发布正式:
切换分支到feature-A
,merge origin/release
以获得主分支release中最新代码;
如果合并有代码冲突解决一下,然后commit origin/feature-A
;
然后基于feature-A
进行打包,发布正式即可。 - 正式验证无误,代码合并入主分支release 【避免污染主分支】
切换分支到本地 主分支release
,如果需要则从origin/release
中pull
一下最新代码;
然后merge origin/feature-A
,再commit一下即可。
注意:
步骤5中,
test <---merge---origin/feature-A是 允许的;
origin/feature-A <---merge---test 是 禁止的
【test 分支代码比较混杂、肮脏,所以不能 git merge test】;
原因:
要始终保证【 feature-A = 主分支release最新代码 + 纯粹的功能A代码】
test分支中可能包含很多暂未发布正式的、未经测试验证、不完整的代码,如果test---merge---> orgin/feature-A 会污染自己的功能分支。
2.2 修复bug分支:
可采用 fixbug-*
的形式命名
步骤同上
- 基于
主分支release
创建fixbug-B
分支; - 开发完毕,
test<---merge---fixbug-B
,发布公测; -
fixbug-B<---merge---release
,发布正式; - 正式验证无误,才
release<---merge---fixbug-B
,避免污染主分支release。
2.3 预发布分支:
前提:如果一次发布涉及多个开发人员,多个开发分支,feature-A
、feature-B
、feature-C
等。
- 发布正式,基于
主分支release
创建预发布分支 release-20230413
; - 全量合入代码
release-20230413 <---merge--- feature-A
release-20230413 <---merge--- feature-B
release-20230413 <---merge--- feature-C
- 基于
预发布分支 release-20230413
,打包代码,发布正式; - 正式验证无误,才
release <---merge--- release-20230413
,避免污染主分支release。
3. git commit message格式规范
<type>(<scope>): <subject>
例如:
fix(设备管理): 设备sn支持模糊搜索
feat(三方应用): 修改时,初始化时间
type必填表示提交类型,值有以下几种:
- feat - 新功能 feature
- fix - 修复 bug
- docs - 文档注释
- style - 代码格式(不影响代码运行的变动)
- refactor - 重构、优化(既不增加新功能,也不是修复bug)
- perf - 性能优化
- test - 增加测试
- chore - 构建过程或辅助工具的变动
- revert - 回退
- build - 打包
scope选填表示commit的作用范围,如数据层、视图层,也可以是目录名称
subject必填用于对commit进行简短的描述
文章参考:Git提交话术规范