Git 协作
分支命名
类型 | 命名 |
---|---|
上线 | master |
开发 | dev |
功能 | feat/[姓名]/[时间]/[补充名] |
修复 | fix/[姓名]/[时间]/[补充名] |
rebase | rebase/[其他分支名称] 或者 rebase/[姓名]/[时间]/[补充名] |
补充名
补充名为可选,名称为标识作用,如 spring32
姓名格式
姓名声母小写,例 张三
=> zhs
时间格式
年份后两位+日+月,日月不足两位补全两位,例 211202
。
注意
feat
分支时间使用迭代周期开始时间。fix
分支使用当前时间。
假设 迭代:【211213-211224 期】; 当前时间为:211220 ; 开发人为张三;
分支名称示例:feat/zhs/211213
,fix/zhs/211220
rebase
分支命名注意事项rebase
的分支打算合并到master
分支发布版本时: 使用rebase/[姓名]/[时间]/[补充名]
格式命名,时间为迭代开始时间,例rebase/zhs/211213
其他分支 rebase 时:使用
rebase/[其他分支名称]
格式命名,例rebase/dev
,rebase/feat/zhs/211213
,rebase-fix-zhs-211220
工作流程
Commit Message 规范
消息格式
消息必须匹配以下正则表达式:
/^(revert: )?(feat|fix|docs|dx|refactor|perf|test|workflow|build|ci|chore|types|wip|release|deps)(\(.+\))?: .{1,50}/
示例
出现在Features
标题下,dev
子标题下:
feat(dev): add 'comments' option
出现在Bug Fixes
标题下,dev
子标题下,带有禅道问题#28
的链接:
fix(dev): fix dev error
close #28
出现在“性能改进”标题下,并在“重大更改”下给出重大更改解释:
perf(build): remove 'foo' option
BREAKING CHANGE: The 'foo' option has been removed.
以下提交和667ecc1
不会出现在更改日志中,如果它们是在同一个版本下。如果没有,恢复提交将出现在revert
标头下。
revert: feat(compiler): add 'comments' option
This reverts commit 667ecc1654a317a13331b17617d973392f415f02.
完整的消息格式
一个提交消息包括一个header,body和footer。头文件有type,scope和subject:
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
header 是必须的, scope 是可选的
Revert
如果提交恢复了之前的提交,它应该以 revert:
开头,后面跟着被恢复的提交的头部。在 body
中,它应该说: This revert commit <hash>
。其中的哈希值是被还原的提交的哈希。
Type
如果前缀是feat
, fix
或perf
,它将出现在 changelog
中。然而,如果有任何BREAKING CHANGE,提交将始终出现在 changelog
中。
其他前缀由您自行决定。建议使用docs
、chore
、style
、refactor
和test
作为非变更日志相关任务的前缀。
Scope
范围可以是任何指定提交更改位置的内容。例如 dev
, build
, workflow
, cli
等等...
Subject
主题包含了对变化的简要描述:
- 使用祈使句,现在时: "change"而不是"changed"或"changes"
- 不要把第一个字母大写
- 末尾没有点(.)
Body
和 subject 一样, 使用祈使句,现在时: "change"而不是"changed"或"changes",
正文应该包括改变的动机,并将其与之前的行为进行对比。
如果上线rebase
分支提交信息,需要包含迭代周期信息。如下:
release: 1.0.1
【211213-211220】期:
- feat: xxx
- fix: xxx
Footer
页脚应该包含任何关于BREAKING CHANGE的信息,或者是写关于禅道问题关闭的地方。
Breaking Changes 应该以 BREAKING CHANGE:
+ 一个空格 + 两个换行开头,其余和完整消息格式一致。
版本号
格式
[主版本号].[副版本号].[修复版本号]
例如: 1.0.1
规则
- 巨大改动,主版本号 +1
- 功能迭代,副版本号 +1
- 修复问题,修复版本号 +1
注意
每次发布上线,只能更改其中一个版本号, 某个版本号变动后,其后边的版本号归零。
如当前版本为1.0.1
,进行了一次功能迭代,版本号变动为1.1.0