携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第16天,点击查看活动详情 >>
哈喽,大家好,昨天快下班的时候,出了线上事故,总监紧急召开会议,为了不影响用户体验,决定回滚代码,先叫来运维看看最近发布的内容,运维懵了,又叫来开发看看提交了哪些内容,开发也是一脸糊涂。
气的总监直摔笔。(这个总监刚来不久,很多事不熟悉,加上这本来流程就比较混乱)
我作为一个旁观者(我也刚来,与我无瓜),不禁思考起 Commit Message 的规范,确实我们这也是没有一个规范的,有些习惯比较好的同事写的很清晰,有些就比较放飞自我了。
我自己以前也是没有注意这方面的,看心情了属于。但通过今天这件事我觉得应该重视一下这个问题。如果你也不清楚具体的提交规范,往下看吧!
规范格式的好处
- 统一团队 Git Commit 日志风格
- 方便日后 Reviewing Code
- 查看上线内容时,方便快速浏览
- 快速生成 Change Log
- 提升项目整体质量
格式规范
Angular 规范:是目前使用最广的写法,比较合理和系统化,并且有配套的工具。
每次提交,Commit message 都包括三个部分:Header,Body 和 Footer。
其中,Header 是必需的,Body 和 Footer 可以省略。
不管是哪一个部分,任何一行都不要有太多字符,避免影响美观。
<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>
1.type
type用于说明 commit 的类别,只允许使用下面标识。
- feat:新功能
- fix:修补bug
- docs:修改文档
- style: 格式化代码结构
- pref: 性能提升的修改
- test: 测试用例修改
- refactor:重构(即不是新增功能,也不是修改bug的代码变动,比如重命名变量)
- chore:构建过程或辅助工具的变动(不会影响代码运行)
- build: 对项目构建或者依赖的改动
- ci: CI 的修改
- chore: 其它修改
- revert:回滚到上一个版本,后面跟着被撤销 commit 的 Header。
2.scope
修改文件的范围,比如:视图层、控制层;也可以时用户模块、支付模块这种。
3.subject
subject是 commit 目的的简短描述,不超过50个字符。
- 以动词开头,比如修改、新增、去除
- 结尾不加句号
4.body
body 部分是对本次 commit 的详细描述,描述为什么修改, 做了什么样的修改, 以及开发的思路等等,可以分成多行,每行尽量不超过72个字符,也可不写。
5.footer
footer 只有在两种情况需要填写:
- 如果当前代码与上一个版本不兼容,则 Footer 部分以
BREAKING CHANGE开头,后面是对变动的描述、以及变动理由和迁移方法。 - 如果当前 commit 针对某个issue,那么可以在 Footer 部分关闭这个 issue 。
Closes #123, #245, #992
示例
Example 1 :
fix(登录):登录闪退
再输入特殊字符的时候闪退
Example 2 :
feat(论坛):新增论坛模块
新增论坛话题、推荐、动态等
Close #27042
配套工具
Idea 插件:Git Commit Template
效果展示
