/git-commit-message-convention

:pencil: Extend git commit message from angular style

Primary LanguageJavaScriptMIT LicenseMIT

git-commit-message-convention

Extend git commit message from angular style

Commit Message Format

All Commit Message Format MUST meet this Text Format:

[:<Emoji>: ][<Type>[(<Scope>)]: ]<Subject>
[<BLANK LINE>]
[<Message Body>]
[<BLANK LINE>]
[<Message Footer>]

Types

Type Description
new for new feature implementing commit
feature for new feature implementing commit (equal new)
update for update commit
bug for bug fix commit
security for security issue fix commit
performance for performance issue fix commit
improvement for backwards-compatible enhancement commit
breaking for backwards-incompatible enhancement commit
deprecated for deprecated feature commit
i18n for i18n (internationalization) commit
a11y for a11y (accessibility) commit
refactor for refactoring commit
docs for documentation commit
example for example code commit
test for testing commit
deps for dependencies upgrading or downgrading commit
config for configuration commit
build for packaging or bundling commit
release for publishing commit
wip for work in progress commit
chore for other operations commit

If the prefix is the below types, it will appear in the changelog.

  • new (feature)
  • bug
  • performance
  • security
  • improvement
  • deprecated
  • breaking

Scope

The scope could be anything specifying place or category of the commit change. For example $location, $browser, $compile, $rootScope, ngHref, ngClick, ngView, feature1, etc...

Subject

The subject contains succinct description of the change:

  • use the imperative, present tense: "change" not "changed" nor "changes"
  • don't capitalize first letter
  • no dot (.) at the end

Message Body

Just as in the Subject, use the imperative, present tense: "change" not "changed" nor "changes". The body should include the motivation for the change and contrast this with previous behavior.

Message Footer

The Message Footer should contain any information about Notes and also Message Footer should be recommended GitHub Issue ID Reference, Ex. Issue #27, Fixes #1, Closes #2, Resolves #3.

Notes should start with the word NOTE: with a space or two newlines. The rest of the commit message is then used for this.

Revert

If the commit reverts a previous commit, it should begin with revert:, followed by the header of the reverted commit. In the body it should say: This reverts commit ., where the hash is the SHA of the commit being reverted.

Emojis

Emoji Raw Emoji Code Type Description
:star: new or feature add new feature
🐛 :bug: bug fix bug issue
🚑 :ambulance: bug ciritial hotfix bug issue
🔒 :lock: security fix security issue
📈 :chart_with_upwards_trend: performance fix performance issue
:zap: improvement update backwards-compatible feature
💥 :boom breaking update backwards-incompatible feature
⚠️ :warning: deprecated deprecate feature
🌐 :globe_with_meridians: i18n update or fix internationalization
:wheelchair: a11y update or fix accessibility
🚨 :rotating_light: refactor remove linter/strict/deprecation warnings
👕 :shirt: refactor refactoring or code layouting
:white_check_mark: test add tests, fix tests failur or CI building
📝 :pencil: docs update documentation
©️ :copyright: docs decide or change license
🍭 :lollipop: example for example or demo codes
💄 :lipstick: update update UI/Cosmetic
🆙 :up: update update other
🚚 :truck: update move or rename files, repository, ...
🔀 :twisted_rightwards_arrows: update merge conflict resolution
:heavy_plus_sign: update add files, dependencies, ...
:heavy_minus_sign: update remove files, dependencies, ...
🔛 :on: update enable feature and something ...
⬆️ :arrow_up: deps upgrade dependencies
⬇️ :arrow_down: deps downgrade dependencies
📌 :pushpin: deps pin dependencies
🔧 :wrench: config update configuration
📦 :package: build packaging or bundling or building
🐣 :hatching_chick: release initial commit
🎊 :confetti_ball: release release major version
🎉 :tada: release release minor version
:sparkles: release release patch version
🚀 :rocket: release deploy to production enviroment
🔖 :bookmark: release tagged with version label
🔙 :back: revert revert commiting
🚧 :construction: wip WIP commiting

Ask to Be Creative!

Examples

new:

:star: new(graphite): add 'graphiteWidth' option

bug fix:

:bug: fix(graphite): stop graphite breaking when width < 0.1

Closes #28

improve performance:

:chart_with_upwards_trend: performance(graphite): remove graphiteWidth option

The graphiteWidth option has been removed. The default graphite width of 10mm is always used for performance reason.

revert:

:back: revert: new: add 'graphiteWidth' option

This reverts commit 667ecc1654a317a13331b17617d973392f415f02.

Support tools

conventional-changelog

You can use with conventional-changelog-cli and conventional-github-releaser.

e.g. conventional-changelog-cli:

$ npm i --save-dev git://github.com/kazupon/git-commit-message-convention.git
$ conventional-changelog -i CHANGELOG.md -s -n ./node_modules/git-commit-message-convention/convention.js -r 0

e.g. conventional-github-releaser:

$ conventional-github-releaser -n ./node_modules/git-commit-message-convention/convention.js -r 0

TODO

  • support conventional commit tools (e.g. conventional-changelog)
  • lint
  • cli
  • create a conventional commit tools with golang

License

MIT

MIT