Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

规范commit message #29

Open
hfc-advance opened this issue Oct 29, 2018 · 0 comments
Open

规范commit message #29

hfc-advance opened this issue Oct 29, 2018 · 0 comments

Comments

@hfc-advance
Copy link
Owner

hfc-advance commented Oct 29, 2018

commit message 的格式

使用 git commit 可以提交多行 commit message.

commit message 包括三个部分:HeaderBodyFooter

<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>

其中,Header 是必填,BodyFooter 是选填。

Header

Header 包括三个字段:type(必填)、scope(选填)和 `subject(必填)

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

  • feat:新功能(feature)
  • fix:修补bug
  • docs:文档(documentation)
  • style: 格式(不影响代码运行的变动)
  • refactor:重构(即不是新增功能,也不是修改bug的代码变动)
  • test:增加测试
  • chore:构建过程或辅助工具的变动

typefeatfix,则该 commit 将肯定出现在 Change log 之中

scope 用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同

subjectcommit 目的的简短描述,不超过50个字符

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

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

More detailed explanatory text, if necessary.  Wrap it to 
about 72 characters or so. 

Further paragraphs come after blank lines.

- Bullet points are okay, too
- Use a hanging indent

Footer 部分只用于两种情况

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

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

Closes #123, #245, #992

Commitizen -- 自动生成合格的 commit message

根据上述的描述,你是不是在感慨写个 commit message 好麻烦,这里介绍下 Commitizen -- 能够根据提示自动生成符合规范的 commit message

安装

npm install -g commitizen

在项目中使用

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

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

Commit

在提交的时候就可以使用 git cz 就可以根据提示,生成自动化的 commit message
result

validate-commit-msg 检查你的 commit-message 规范

Commitizen 可以帮助我们规范自己的 commit-message,但是在团队合作中,如何规范其他成员的 commit 规范呢?

可以使用 validate-commit-msg 来检查你的项目的 commit-message 是否符合格式

validate-commit-msg 安装

npm install --save-dev validate-commit-msg

husky 安装

按照 validate-commit-msgREADME 中写的,可以用 validate-commit-msg 作为一个 githook 来验证提交消息,并且推荐了 husky

npm install husky --save-dev

并且在 package.json 中的 scripts 字段中加入

"commitmsg": "validate-commit-msg"

然后每次 git commit 之后,就会自动检查 commit message 是否合格。如果不合格,就会报错

husky > commit-msg (node v9.2.1)
INVALID COMMIT MSG: does not match "<type>(<scope>): <subject>" !
change
husky > commit-msg hook failed (add --no-verify to bypass)

参考资料
https://juejin.im/post/5bd2debfe51d457abc710b57
https://zhuanlan.zhihu.com/p/34223150

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant