Git Commit 日志风格指南

介绍

我们的所有项目都使用 Git 做版本管理,这篇文档用于规范我们的 commit 日志。主要内容参考了 Conventional CommitsAngular Contributing Guide,按照我们的情况进行了增删。

格式

日志的所有内容都使用 ASCII 字符,不要用中文或者 emoji,这样最大化兼容性,也便于程序处理。总体结构如下:

类型(可选的范畴): 简短描述

可选的详情

可选的注解

下面是一个完整的示例:

feat(auth): increase length of new API key

the length is increased from 24 to 32 for new API keys

close #12

各部分说明

标题

标题是每条 commit 日志的第一行,包含类型、范畴、描述三部分。

以下为可用的 commit 类型及意义。

类型 说明
feat feature - 所有实现新功能、新行为的 commit 都属这个类型
fix 修正缺陷的 commit
chore 日常维护性的改动,例如 linter 的配置等
test 与测试有关的改动
refactor 不改变行为的对代码结构的改进
style 对代码风格的修正(仅限缩进、空行一类的简单改动,对结构有影响的用 refactor
cosm cosmetic - 不改变行为的对界面的纯视觉上的改动
docs 对文档的改进,包括对外文档和代码注释
build 和构建流程、持续集成等有关的改动

我们的类型数量比其他类似规范的类型少,这是有意的精简。类型少既便于记忆,又能避免一些模凌两可的情况,可以降低决策成本。如果你以前使用过其他的规范,那么把这里不存在的类别归到最接近的即可。比如其他规范中的 ci 我们包含到 build里;再比如 perf 归到 feat,毕竟性能也是一种 feature

docs 是指针对其他项目成员的注释和文档。如果这个项目就是文档性质的,比如静态博客、SDK 文档,那么新增针对外部用户的内容就应该算是 feature,使用 feat

如果一个改动会破坏向前兼容性,影响到依赖本项目的其他系统(比如旧版的 SDK,前端、客户端,或者会发生 API 调用的其他子系统)的行为,请在类型后面加上感叹号,比如 feat!: ... 以便识别。此外请参见下面详情小节中关于 BREAKING: 的描述。

对于大部分功能单一的 repo,范畴部分(示例中的 (auth))是不需要的。对于包含多方面的功能又暂时不便拆分的 repo,应该把范畴标准化并记录在 READMECONTRIBUTING 文件中。

描述部分是以小写字母开头的一个短句,只有专用名词首字母大写,缩略语大写,结尾不用句号。按照 Git 的习惯,整个标题应该不超过 72 个字符,所以标题中的描述要尽量简短。如果你发现无法限制在 72 个字符内,优先考虑把这个 commit 拆分成多个目的更单一的 commit。如果逻辑上无法拆分,就把详细信息放在下面的详情里,保持标题简短。

详情

详情和标题间隔一个空行。大部分 commit 应该保持目的单一,不需要详情部分。对于原因不是显而易见,或者原理需要解释的 commit,可以在这个部分说明。如果只是一个简单的句子,可以使用与标题描述部分相同的格式。如果超过一行,请按照常规的段落格式,包括句首字母大写,正确使用标点等。详情可以有多行、多段,每行不超过 72 个字符,行尾不要有空格,段落之间用空行隔开。

如果在当前 commit 中包含破坏向前兼容性的改动(见上面关于标题的描述),在详情中的第一段请以 BREAKING: 开头,说明这个改动的具体影响和原因。比如:

feat!(api): limit array length to 256 elements

BREAKING: Array length limit is added to further limit request size. A
small number of existing apps may receive HTTP 413 "Payload too Large"
error.

注解

注解与详情以一个空行隔开,通常是一些与自动化工具集成需要的关键词和信息。比如可以关闭 GitHub issue。GitHub 支持多个作用相同的关键词,我们统一用 close,并且使用较短的形式 close 而不是 closedcloses

其他注意事项

标题和详情中出现的描述当前 commit 的动词统一使用一般现在时。

数据来源

本文原载于 open.leancloud.cn,取自 网站归档 中的副本。该副本不是抓取,而是用原站源码 leancloud/open77a79ad 构建的,构建日期 2026-07-28

正文按原样保留。指向本站已存档内容的链接改为站内地址,已经失效的链接改为互联网档案馆的快照,链接前的图标标明它现在通向哪里。