Skip to contents

Structured commit messages

When commiting changes with git commit we try to use structured commit messages, adapted from https://www.conventionalcommits.org/. The first line of commit message should have the following format:

<type>: <summary>

The summary should be short (preferably < 50 characters), starting with an upper case, and written in present tense. If the commit references a specific issue, include Refs #<issue number> in the summary. If the issue is a bug report, you may also use Fix #<issue number> such that the issue gets closed automatically.

The type should be one of the defined types listed below. If you feel artistic, you can end the commit message with the emoji belonging to the type ๐Ÿ˜Ž.

  • feat: Implementation of a new feature. :gift: ๐ŸŽ
  • fix: A bug fix. :wrench: ๐Ÿ”ง
  • style: Changes to code formatting. No change to program logic. :art: ๐ŸŽจ
  • refactor: Changes to existing functionality that do not change behaviour. :construction: ๐Ÿšง
  • breaking: Changes to existing functionality that are not backwards compatible. :warning: โš ๏ธ
  • docs: Adding, removing or updating user documentation. :books: ๐Ÿ“š
  • logs: Adding, removing or updating log messages. :sound: ๐Ÿ”‰
  • test: Adding, removing or updating tests. No changes to user code. :test_tube: ๐Ÿงช
  • cicd: Adding, removing or updating CI/CD workflows. No changes to user code. :robot: ๐Ÿค–
  • deps: Adding, removing or updating dependencies. :couple: ๐Ÿ‘ซ
  • release: Preparing a release, e.g.ย updating version numbers. :bookmark: ๐Ÿ”–
  • repo: Changes to the repository that do not involve code/documentation, e.g.ย adding templates or community files. :package: ๐Ÿ“ฆ

Example commit messages are:

git commit -m 'feat: Add bar parameter to foo(). Refs #10 :gift:'
git commit -m 'fix: Include type checking in foo(). Fix #12 :wrench:'