Git Commit Msg

简介: Git Commit Msg

The reasons for these conventions:

  • automatic generating of the changelog
  • simple navigation through git history (e.g. ignoring style changes)

Format of the commit message

Commit message 包括三部分: Header, Body 和 Footer .

<type>(<scope>): <subject>
// Empty one line 
<body>
// Empty one line
<footer>

Header 必须, Body 和 Footer 可以省略。

第一行不得超过 70 个字符,第二行始终为空。其他行换行行为 80 个字符, typescope 始终小写。

Header

Header 部分只有一行,三个字段: type(必需)、scope(可选)和subject (必需)。

(1) type

type 用于说明 commit 的类别,允许使用下面标识。

  • feat: 新功能 (feature)
  • fix: 修补 bug
  • docs: 文档(document)
  • style: 格式/样式(不影响代码运行的变动)
  • refactor: 重构(既不是新增功能,也不是修改bug的代码改动)
  • test: 增加测试
  • chore: 构建过程或辅助工具的变动
  • perf: 提高性能的代码更改
  • build: 影响构建系统或外部依赖项的更改(示例范围: gulp, npm)
  • ci: 对CI配置文件和脚本的更改(示例范围:Travis,Circle,BrowserStack)
  • revert: 恢复到以前的提交
(2) scope

scope 用于说明 commit 影响的范围

  • init
  • runner
  • watcher
  • config
  • web-server
  • proxy
  • etc.
(3) subject

subject 是 commit 目的的简短描述,不超过 50 个字符

  • 以动词开头,使用第一人称现在时,比如 change, 而不是 changedchanges
  • 第一个字母小写
  • 结尾不加句号(.)

Body

Body 是对本次 commit 的详细描述,可多行。下面是一个范例。

More detailed explanatory text, if necessary.  Wrap it to 
about 70 characters or so. 
Further paragraphs come after blank lines.
- Bullet points are okay, too
- Use a hanging indent

两个注意点

  1. 使用第一人称现在时, 使用 change 而不是 changedchanges
  2. 说明代码变动的动机,以及与以前行为的对比。

Footer

Footer 部分只用于两种情况。

(1) 不兼容变动

如果当前代码与上一个版本不兼容,则 Footer 部分以 BREAKING CHANGE 开头,后面是对变动的描述、以及变动理由和迁移方法。

BREAKING CHANGE:
`port-runner` command line option has changed to `runner-port`, so that it is
consistent with the configuration file syntax.
To migrate your project, change all the commands, where you use `--port-runner`
to `--runner-port`.
(2) 关闭 Issue

如果当前 commit 针对某个 issue ,那么可以在 Footer 部分关闭这个 issue。

前缀为Closes 关键字,如下所示:

Closes #123

也可以关闭多个 issue 。

Closes #456 #789 #911

Revert

还有一种特殊情况,如果当前 commit 用于撤销以前的 commit,则必须以revert: 开头,后面跟着被撤销 Commit 的 Header。

revert: feat(pencil): add 'graphiteWidth' option
This reverts commit 667ecc1654a317a13331b17617d973392f415f02.

Body 部分的格式是固定的,必须写成This reverts commit &lt;hash>. ,其中的 hash 是被撤销 commit 的 SHA 标志符。

如果当前 commit 与被撤销的 commit , 在同一个发布(release)里面,那么它们都不会出现在 Change log 里面。如果两者在不同的发布,那么当前 commit,会出现在 Change log 的 Reverts 小标题下面。

Commitizen

Commitizen 是一个撰写合格 Commit message 的工具。

安装

npm install -g commitizen

然后,在项目目录里,运行下面命令,使其支持 Angular 的 Commit message 格式。

commitizen init cz-conventional-changelog --save --save-exact

以后,凡是用到 git commit 命令,一律改为使用 git cz 。这时会出现选项,用来生成符合格式的 Commit message.

➜  vue-examples git:(master) ✗ git add . 
➜  vue-examples git:(master) ✗ git cz
cz-cli@3.0.7, cz-conventional-changelog@2.1.0
Line 1 will be cropped at 100 characters. All other lines will be wrapped after 100 characters.
? Select the type of change that you're committing: 
  revert:   Reverts a previous commit 
  feat:     A new feature 
  fix:      A bug fix 
❯ docs:     Documentation only changes 
  style:    Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc) 
  refactor: A code change that neither fixes a bug nor adds a feature 
  perf:     A code change that improves performance 

生成 Change log

使用 conventional-changelog 工具生成 Change log

安装

npm install -g conventional-changelog-cli

进入项目目录

cd my-project

生成 Change log

conventional-changelog -p angular -i CHANGELOG.md -s

Angular 规范:docs.google.com/document/d/…

目录
相关文章
|
6月前
|
人工智能 缓存 开发工具
结合企业实践来规范你的Git commit(含插件使用指南)
结合企业实践来规范你的Git commit(含插件使用指南)
结合企业实践来规范你的Git commit(含插件使用指南)
|
6月前
|
JSON 开发工具 git
git rebase 合并当前分支的多个commit记录
git rebase 合并当前分支的多个commit记录
125 1
|
2月前
|
开发工具 git
GIT:如何合并已commit的信息并进行push操作
通过上述步骤,您可以有效地合并已提交的信息,并保持项目的提交历史整洁。记得在执行这些操作之前备份当前工作状态,以防万一。这样的做法不仅有助于项目维护,也能提升团队协作的效率。
144 4
|
2月前
|
开发工具 git
GIT:如何合并已commit的信息并进行push操作
通过上述步骤,您可以有效地合并已提交的信息,并保持项目的提交历史整洁。记得在执行这些操作之前备份当前工作状态,以防万一。这样的做法不仅有助于项目维护,也能提升团队协作的效率。
236 3
|
3月前
|
开发工具 git
Git——commit的提交规范
Git——commit的提交规范
102 4
|
3月前
|
测试技术 持续交付 开发工具
[译] 为何每次 Git Commit 要尽可能小?
[译] 为何每次 Git Commit 要尽可能小?
|
3月前
|
Java 开发工具 Android开发
Android Studio利用Build.gradle导入Git commit ID、Git Branch、User等版本信息
本文介绍了在Android Studio项目中通过修改`build.gradle`脚本来自动获取并添加Git的commit ID、branch名称和用户信息到BuildConfig类中,从而实现在编译时将这些版本信息加入到APK中的方法。
71 0
|
4月前
|
前端开发 JavaScript 开发工具
前端优化之路:git commit 校验拦截
前面在git分支规范那篇文章里,介绍了commit提交规范,但是想要做到高效落地执行,就需要做些别的功课。
|
3月前
|
IDE 开发工具 git
我是怎么写 Git Commit message 的?
我是怎么写 Git Commit message 的?
52 0
|
5月前
|
存储 开发工具 git
蓝易云 - git中,add到暂存区,commit且push之后,暂存区域里还有内容吗
所以,当你执行 `git add`,然后是 `git commit`,最后是 `git push`之后,暂存区是空的,除非你又执行了新的 `git add`命令来添加更多的更改。
47 1