Menialov Mykhailo

Git commit messages

Each commit message consists of a header, a body, and a footer.


<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

Header

The header is mandatory and the scope is optional.


Type

Must be one of the following:

  • feat: introduces a new feature to the codebase
  • fix: patches a bug in your codebase
  • refactor: improves the code without changing functionality
  • BREAKING CHANGE: major version

Additional types:

  • build: a change that affects the build system or external dependencies
  • chore: same as build but chore is preferred, also any change that doesn’t fit in any other type
  • ci: changes to the CI configuration
  • docs: changes to the documentation
  • style: white-space, formatting, semi-colons, etc.
  • perf: performance improvements
  • test: adding or fixing tests

Scope

The scope can be empty. Scope can be any of these:

  • category, part or section of the codebase we are affecting, e.g.: api, client, tooling
  • a specific package, library or dependency,e.g.: moment.js, requests
  • a ticket number in case the current commit doesn’t close it, e.g.: chore(123): update dependencies

Subject

Short (50 chars or less) summary of the change:

  • use the imperative, present tense: “change” not “changed”
  • don’t capitalize the first letter
  • no dot (.) at the end

Footer

The footer should contain a closing reference to an issue if any and breaking changes.


Closes #123, #345
BREAKING CHANGE:
IE6 not supported anymore.

Semantic versioning

Conventional commits are designed to work with Semantic versioning.

  • feat: minor version
  • fix: patch version
  • BREAKING CHANGE: major version

Examples


Add a new feature without breaking existing functionality. This bumps a minor version, e.g.: 1.2.0 to 1.3.0.


feat: add search for transactions

Add new React component for searching transactions with autocompletion.


Include tests.


Closes #123, #234


Fix a bug. This bumps a patch version, e.g.: 1.3.0 to 1.3.1.


bug(api): add correct status code for existing resources

We return `409` when trying to create a user with an existing email.


Closes #453

Add new feature that breaks existing functionality. This bumps a major version, e.g.: 1.3.1 to 2.0.0.


feat!: add bank sync

This replace CSV import and use Plaid to connect to people's banks.


Closes #423, #424, #425


BREAKING CHANGE:
People won't be able to import transactions using CSV. Only Bank
Sync is available.

Resources


https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md#-commit-message-guidelines


https://stackoverflow.com/a/71778941


https://karma-runner.github.io/0.10/dev/git-commit-msg.html


https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html


https://sparkbox.com/foundry/semantic_commit_messages


https://softwareengineering.stackexchange.com/questions/431132/how-can-i-write-good-conventional-commit-style-commit-messages-for-one-feature-o


https://www.conventionalcommits.org/en/v1.0.0/#summary

Git commit messages - Blog - Meniailov Mykhailo