The commit message should be structured as follows:
(emoji) <type>[optional scope]: <description>
[optional body]
[optional footer(s)]
The commit contains the following structural elements, to communicate intent to the consumers of your library:
- fix: a commit of the type fix patches a bug in your codebase (this correlates with PATCH in Semantic Versioning).
- feat: a commit of the type feat introduces a new feature to the codebase (this correlates with MINOR in Semantic Versioning).
- BREAKING CHANGE: a commit that has a footer BREAKING CHANGE:, or appends a ! after the type/scope, introduces a breaking API change (correlating with MAJOR in Semantic Versioning). A BREAKING CHANGE can be part of commits of any type.
- types other than fix: and feat: are allowed, for example @commitlint/config-conventional (based on the the Angular convention) recommends build:, chore:, ci:, docs:, style:, * refactor:, perf:, test:, and others.
- footers other than BREAKING CHANGE: may be provided and follow a convention similar to git trailer format.
Additional types are not mandated by the Conventional Commits specification, and have no implicit effect in Semantic Versioning (unless they include a BREAKING CHANGE). A scope may be provided to a commitβs type, to provide additional contextual information and is contained within parenthesis, e.g., feat(parser): add ability to parse arrays.
Fork and modify to suit your needs. Don't forget to "star" and share the love.
Text | Image | GFM shortcode* | Windows 10 picker name | When to use it |
---|---|---|---|---|
π |
π | :tada: |
party popper |
initial commit |
β¨ |
β¨ | :sparkles: |
sparkles |
when adding a new user-facing feature |
π¨ |
π¨ | :art: |
artist palette |
when improving UI |
π¦ |
π¦ | :package: |
package |
when refactoring or improving code |
π |
π | :racehorse: |
horse |
when improving performance |
π |
π | :lock: |
locked |
when improving security |
π§ |
π§ | :wrench: |
wrench |
when updating configs |
βΏ |
βΏ | :wheelchair: |
wheelchair symbol |
when improving accessibility |
π |
π | :rocket: |
rocket |
when improving dev tools |
π |
π | :pencil: |
pencil |
when writing docs (e.g. README, code comments) |
π |
π | :gem: |
gem stone |
when cutting a new release / version bump |
π |
π | :bug: |
bug |
when fixing a bug |
π₯ |
π₯ | :boom: |
collision |
when fixing a crash |
π± |
π± | :non-potable_water: |
non-potable water |
when fixing a memory leak |
π₯ |
π₯ | :fire: |
fire |
when removing code or files |
β
|
β | :white_check_mark: |
check mark button |
when adding new tests |
π |
π | :green_heart: |
green heart |
when fixing the CI build |
π |
π | :shirt: |
t-shirt |
when fixing linter warnings |
π‘ |
π‘ | :satellite: |
satellite antenna |
when adding instrumentation or metrics |
π |
π | :loud_sound: |
speaker high volume |
when adding logging |
π |
π | :mute: |
muted speaker |
when removing logging |
β¬ |
β¬οΈ | :arrow_up: |
up arrow |
when upgrading dependencies |
β¬ |
β¬οΈ | :arrow_down: |
down arrow |
when downgrading dependencies |
π |
π | :crossed_flags: |
crossed flags |
when adding an A/B test or feature flag** |
β‘ |
β‘ | :zap: |
high voltage |
when making a backwards-incompatible change** |
π§ |
π§ | :construction: |
construction |
when the change is a work in progress (do not merge)** |
π§ feat: allow provided config object to extend other configs
BREAKING CHANGE: `extends` key in config file is now used for extending other config files
β¨ feat!: send an email to the customer when a product is shipped
β¨ feat(api)!: send an email to the customer when a product is shipped
π chore!: drop support for Node 6
BREAKING CHANGE: use JavaScript features not available in Node 6.