Skip to content

Instantly share code, notes, and snippets.

@rishavpandey43
Last active October 7, 2024 16:01
Show Gist options
  • Save rishavpandey43/84665ffe3cea76400d8e5a1ad7133a79 to your computer and use it in GitHub Desktop.
Save rishavpandey43/84665ffe3cea76400d8e5a1ad7133a79 to your computer and use it in GitHub Desktop.
This gist consist of the rules and best practice of good conventional git commit message

Git Commit Messages Style-Guides

  • 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

Types

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

Emojis

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

Example 1 (single line commit message)

: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).

Example 2(multi-line commit message)

All Commit Message Format MUST meet this Text Format:

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

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.

Examples:

new:

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

bug fix:

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

Closes #28

References:

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