commit message 规范化实践

Commitizen和git commit message规范化实践。

按照惯例这里有一篇与git相关的文章。git的提交信息很重要,尤其在多人协作开发大型软件的场景下。本文介绍完整的git commit message应该包括哪些信息,以及如何省心省力地书写这些信息。

git commit message

1
2
3
4
5
# 一行commit message足矣
$ git commit -m "<commit message>"

# 如果需要写多行commit message
$ git commit # 进入文本编辑器写更详细的提交信息

commit message的写法就像变量的命名方法,应力求简洁准确,清晰明了。具体的commit message格式有不同标准,这里采用Angular规范

一种简单淳朴的方式是手工创建一个纯文本文件.git_commit_message_template,在这个文件中填写希望每次提交时需要提供的信息,修改~/.gitconfig文件,在其中加上:

1
2
[commit]
template = ~/.git_commit_message_template

这样每次使用git commit唤起文本编辑器时,.git_commit_message_template中的内容会以注释的形式出现在编辑器中作为hints。

这样的方式或许过于简单淳朴,十分懒人不友好。幸运的是,可以通过Commitizen工具实现一定程度的自动化。

AngularJS Git Commit Message Conventions

Angular规范规定的commit message包括三个部分:

  • Header:说明提交类别、提交的影响范围和提交的目的
  • Body:对本次提交的详细描述
  • Footer:产生不兼容变动或关闭issue时写

具体写法可参考这里

Commitizen

安装Commitizen需要npm,作者推荐使用nvm管理node版本。

1
2
3
$ npm install -g commitizen
# 切换到项目目录下
$ commitizen init cz-conventional-changelog --save --save-exact

注意安装好后可能要修改.gitignore文件。

此后提交操作的命令由git commit变为git cz

本文参考了以下内容