Short (72 chars or less) summary
More detailed explanatory text. Wrap it to 72 characters. The blank
line separating the summary from the body is critical (unless you omit
the body entirely).
Write your commit message in the imperative: "Fix bug" and not "Fixed
bug" or "Fixes bug." This convention matches up with commit messages
generated by commands like git merge and git revert.
Further paragraphs come after blank lines.
- Bullet points are okay, too.
- Typically a hyphen or asterisk is used for the bullet, followed by a
single space. Use a hanging indent.
Add CPU arch filter scheduler support
In a mixed environment of…
If applied, this commit will <your subject line here>
- Separate subject from body with a blank line
- Do not end the subject line with a period
- Capitalize the subject line and each paragraph
- Use the imperative mood in the subject line
- Wrap lines at 72 characters
- Use the body to explain what and why you have done something. In most cases, you can leave out details about how a change has been made.
- Describe why a change is being made.
- How does it address the issue?
- What effects does the patch have?
- Do not assume the reviewer understands what the original problem was.
- Do not assume the code is self-evident/self-documenting.
- Read the commit message to see if it hints at improved code structure.
- The first commit line is the most important.
- Describe any limitations of the current code.
- Do not include patch set-specific comments.
Details for each point and good commit message examples can be found on https://wiki.openstack.org/wiki/GitCommitMessages#Information_in_commit_messages
If the commit refers to an issue, add this information to the commit message header or body. e.g. the GitHub web platform automatically converts issue ids (e.g. #123) to links referring to the related issue. For issues tracker like Jira there are plugins which also converts Jira tickets, e.g. Jirafy.
In header:
[#123] Refer to GitHub issue…
CAT-123 Refer to Jira ticket with project identifier CAT…
In body:
…
Fixes #123, #124
It's something to aspire to rather than a strict requirement. What counts as "one feature" is ususally determined by what a user wrote in a single issue in the tracker, but we all know that some features are bigger than others. I said multiple commits are allowed, if necessary.
The most important thing is to ensure that that each commit does exactly one thing: no more, no less. Developers look at commits when they try to understand your code changes. If there are too many commits then the history will be too long, but if there are too few then the diffs will be too long and it will be hard to understand what they do from the summary alone.
Yes indeed, but that is mainly for when you are working on your own branch, and this guide doesn't really apply in that situation. In fact I would recommend you ignore this guide entirely on your own branch, because writing detailed commit messages is a burden that will discourage you from committing early and often. However, once you have got something working, you need to tidy it up a bit before sharing it with other people. That's where this guide comes in, and tools like
--fixup
and--autosquash
help a lot too.