针对 git 提交,做出如下规范,避免出现提交描述不清楚,回溯困难。
1.必须先拉取代码再提交代码
1 | git pull |
避免出现不必要的自动merge
,和冲突代码
2.提交代码原则(粒度)
项目代码稳定之后(总体架构完成),每次提交都要考虑提交的粒度问题,尽量做到 baby step
- 没有关联的代码不能一次 commit 提交
- 关联代码一次提交;若内容很多,可内部分层,依次提交
可以根据当前代码模块情况处理。
3.必须提交 Commit Message
- 没有 Commit Message 不允许提交
- 不在
git commit
上增加-m <msg>
或--message=<msg>
参数,而单独写提交信息
不允许
1 | git commit -m "Fix login bug" |
推荐
angular 的 GitHub 的 Commit
1 |
|
段落 Commit Message
Commit Message 分三个部分, header, body, footer. 其中,header 是必需的,body 和 footer 可以省略。
不管是哪一个部分,任何一行都不得超过 100 个字符,以免影响阅读性。
1 | type>(<scope>): <subject> < |
1 | [FE]Fix(card): fix card edit support to unuse item |
header
Header 部分只有一行,包括三个字段:type(必需)、scope(可选)、team(可选)和 subject(必需)。
type
用于说明 commit 的类别,只允许使用下面 7 个标识。
Add:新加功能
Fix:修补bug
Modify:移除无用代码
Remove:移除第三方模块或者移除文件
Update:更新第三方模块
Style: 格式(不影响代码运行的变动)
Chore:构建过程或辅助工具的变动
scope
scope 用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。
例如在 shrezone,可以是 file, card, image, short_video 等。
如果你的修改影响了不止一个 scope,你可以使用*代替。
team
当不同的 team 一起编写代码的时候,带 team 以区分工作区域
subject
subject 是 commit 目的的简短描述,不超过 50 个字符。
其他注意事项:
以动词开头,使用第一人称现在时,比如change,而不是changed或changes
第一个字母小写
结尾不加句号(.)
Body
Body 部分是对本次 commit 的详细描述,可以分成多行。
比如 react 的提交
1 | Sync out another jsx transform test. |
注意点:
使用第一人称现在时,比如使用change而不是changed或changes。
要和header之间有一个空行
应该说明代码变动的动机,以及与以前行为的对比。
Footer
Footer 部分只用于以下两种情况:
不兼容变动
如果当前代码与上一个版本不兼容,则 Footer 部分以 BREAKING CHANGE 开头,后面是对变动的描述、以及变动理由和迁移方法。
关闭 Issue
如果当前 commit 针对某个 issue,那么可以在 Footer 部分关闭这个 issue 。
Revert
一种特殊情况,如果当前 commit 用于撤销以前的 commit,则必须以 revert:开头,后面跟着被撤销 Commit 的 Header。
1 | revert: feat(pencil): add ‘graphiteWidth‘ option |