Commit message 是开发的日常操作,它可以提供更多的历史信息,方便向团队清晰准确地说明代码变更、进行代码评审,也便于后期快速定位原始需求或缺陷,还可以有效的生成 Change log,对项目的管理实际至关重要,但是实际工作中却常常被大家忽略。
目前,社区有多种 Commit message 的写法规范,但使用较多的是 Angular
团队的规范, 继而衍生了Conventional Commits specification
。本次整理的内容基于此规范。
每个commit message
均由页眉(header)、正文(body)和页脚(footer)组成,每次提交必须包含页眉内容。页眉(header)具有一种特殊的格式,其中包括 type
,scope
和 subject
。
提交message格式如下:
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
header 是必填的,描述主要修改类型和内容,header 的 scope 是可选的。
类型用于标识更改的性质。常见的类型包括但不限于:
作用域是可选的,但推荐使用。它指明了提交影响的部分,比如button
, menu
, router
等特定组件或模块。
Subject(主题)是对更改的简短描述,应该以动词开头,并且尽量保持在50个字符以内。这是提交信息的主要内容,需要清晰地表达出这次更改的目的。
git commit -m "feat: add user authentication feature"
git commit -m "refactor: 重构登录流程,提高代码可读性"
git commit -m "fix: 修复用户登录时的空指针异常"
git commit -m "style: 调整界面布局,改善用户体验"
git commit -m "security: 修复XSS攻击漏洞"
git commit -m "修改bug"
git commit -m "更新代码"
可选的。body 应包括改变的动机,并将其与以前的行为进行对比。也就是说,描述为什么修改,做了什么样的修改,以及开发的思路等,是 commit 的详细描述。
可选的。通常用来提及关闭的issues,或者其他值得注意的事项,如破坏性的改动。
例如关闭issue Closes #233, #344
git commit -m "fix(core): 修复了内核的一个xx bug" -m "此次修复了之前一直导致系统不稳定的问题" -m "关闭issue xx"
还有一种特殊情况,如果当前 commit 还原了先前的 commit,则应以 revert:开头,后跟还原的 commit 的 header。在 body 中必须写成:This reverts commit
revert: feat(pencil): add 'delete' option
This reverts commit 667ecc1654a317a13331b17617d973392f415f02.