Commit Message 不规范,出问题只能哭了

160 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 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

效果展示