Commit Message Guidelines
Goals
- allow generating the change log by script
- allow ignoring commits by git bisect (not important commits like formatting)
- provide better information when browsing the history
Commit Message Format
Each commit message consists of a header, a body and a footer. The header has a special format that includes a type, a scope and a subject:
<type>[optional scope]: <Jira issue id> <subject>
[optional body]
[optional footer(s)]
2
3
4
5
Any line of the commit message cannot be longer 100 characters! This allows the message to be easier to read on GitLab as well as in various git tools. We also mention a Jira issue ID in the commit message for automating work with GitLab in Jiraopen in new window.
Samples:
feat: MS-12 allow provided config object to extend other configs
Type
Must be one of the following:
chore: Changes that affect the build system or external dependencies
ci: Changes to our CI configuration files and scripts
docs: Documentation only changes
feat: A new feature
fix: A bug fix
perf: A code change that improves performance
refactor: A code change that neither fixes a bug nor adds a feature
style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
test: Adding missing tests or correcting existing tests
Scope
A scope
may be provided to a commit’s type, to provide additional contextual information and is contained within parenthesis, e.g.
Samples:
feat(parser): add ability to parse arrays
Subject
The subject contains a succinct description of the change:
- use the imperative, present tense: "change" not "changed" nor "changes"
- don't capitalize the first letter
- no dot (.) at the end
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.
Footer
The footer should contain any information about Breaking Changes.
Breaking Changes should start with the word BREAKING CHANGE: with a space or two newlines. The rest of the commit message is then used for this.
A detailed explanation can be found in this documentopen in new window.