Git commit格式参考

前言

编写良好的Commit messages可以达到以下几个重要的目的

  • 加快review的流程
  • 帮助我们编写良好的版本发布日志
  • 让之后的维护者了解代码里出现特定变化和feature被添加的原因

目前,社区有多种 Commit message 的写法规范。来自Angular 规范是目前使用最广的写法,比较合理和系统化。如下图:
angular_commit_example

Commit messages格式

当前业界应用的比较广泛的是 Angular Git Commit Guidelines

具体格式为:

1
2
3
4
5
<type>: <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

每个commit message一般包含header、body和footer,header是必须的,body和footer不做强制要求,所以一般可以简化为

1
<type>(<scope>): <subject>

或者省略scope

1
<type>: <subject>

说明

  • type: 本次 commit 的类型,诸如 bugfix docs style 等
  • scope: 本次 commit 波及的范围
  • subject: 简明扼要的阐述下本次 commit 的主旨
  • body: 同样使用祈使句,在主体内容中我们需要把本次 commit 详细的描述一下,比如此次变更的动机
  • footer: 描述下与之关联的 issue 或 break change,详见案例

例子

1
2
3
4
5
6
7
8
feat(jqLite): add prop() support
fix(ngStyle): correctly remove old style when new style value is invalid
docs(developers): commit message format typo
style(animator): style cleanup
refactor(filter): filters are now injectable and services
perf(*): don't trigger digests after enter/leave of structural directives
test(mocks): test mocks with compiled angular
chore(release): preparing release notes for 0.10.3

Type

类型必须是以下其中一种

  • feat: 新功能
  • fix: bug fix
  • docs: 只改了文档
  • style: 代码格式修改,不影响代码的逻辑性,比如空格,格式化,缺失分号等
  • refactor: 代码重构,既不是bug fix也不是新功能
  • perf: 性能优化
  • test: 补充或修改测试代码
  • chore: 改变构建流程,或者增加依赖库和工具等,比如增加文档生成工具

Scope

范围可以是指定提交更改位置的任何内容,比如search, location, browser, compile等

你可以使用*来代替多个范围

Subject

主题包含对变更的简洁描述,有几个要求

  • 使用祈使句和现代时,比如使用change而不是changed或者changes
  • 首字母不要大写
  • 句末无需使用句号

Body

主体与主题一样,应使用祈使句和现代时,应包括改变的动机,并将其与以前的行为进行对比。

描述一些重大的修改和相关的问题,详情参考 AngularJS Message footer

Revert

当回滚提交时,必须以 revert: 作为开头然后紧跟着该提交的header。

body部分可以这样描述

1
2

This reverts commit <hash>.

hash是将要被回滚的那个提交的SHA码。

参考

您必须知道的 Git 分支开发规范
angular.js-git-commit-guidelines
AngularJS Git Commit Message Conventions

感谢你的阅读,如果文章对你有帮助,可以请作者喝杯茶!