- Use the present tense ("Add feature" not "Added feature")
- Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
- Limit the first line to 72 characters or less
- Reference issues and pull requests liberally after the first line
- When only changing documentation, include
[ci skip]
in the commit title - Consider starting the commit message with an applicable emoji
Type | Description |
---|---|
new |
for new feature implementing commit |
feat / 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 |
Emoji | Raw Emoji Code | Type | Description |
---|---|---|---|
β | :star: |
new or feat / 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 |
:star: feat: add new feature
^----^ ^---^ ^------------^
| | |
| | +-> Summary in present tense.
| |
| +-------> Type:
| chore, docs, feat, fix, refactor, style, test, etc.
|
+-------> Emoji:
:tada: :bookmark: :sparkles: :bug: :books: :wrench: :truck:
Examples:
-
feat:
Add a new feature (equivalent to a MINOR in Semantic Versioning). -
fix:
Fix a bug (equivalent to a PATCH in Semantic Versioning). -
docs:
Documentation changes(update, delete, create documents). -
style:
Code style change (formatting, missing semi colons, etc; no production code change.). -
refactor:
Refactor code(refactoring production code, eg. renaming a variable). -
perf:
Update code performances. -
test:
Add test to an existing feature(adding missing tests, refactoring tests; no production code change). -
chore:
Update something without impacting the user (updating grunt tasks bump a dependency in package.json. no production code change).
All Commit Message Format MUST meet this Text Format:
[:<Emoji>: ][<Type>[(<Scope>)]: ]<Subject>
[<BLANK LINE>]
[<Message Body>]
[<BLANK LINE>]
[<Message Footer>]
The scope could be anything specifying place or category of the commit change. For example $location, $browser, $compile, $rootScope, ngHref, ngClick, ngView, feature1, etc...
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
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.
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.
Examples:
new:
:star: new(graphite): add 'graphiteWidth' option
bug fix:
:bug: fix(graphite): stop graphite breaking when width < 0.1
Closes #28
References: