Git commit message
Commit Message Format
Each commits message consists of a header, a body and a footer. The header has a special format that includes a type and a subject, and link to the ticket:
<type>: <subject>
<org-name>/<project-name>#<ticket-id>
<BLANK LINE>
<BLANK LINE>
Short (72 chars or less) summary
More detailed explanatory text. Wrap it to 72 characters.
<BLANK LINE>
line separating the summary from the body is critical (unless you omit the body entirely).
<BLANK LINE>Further paragraphs come after blank lines.
The subject is mandatory and the type of the header is optional.
Important:
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.Example for a commit message
feat: 245 Add plaid identity functionality
webdevelop-pro/general#245
This code is an initial version of the plaid identity integration
to get user first and last name and prevent of fraudulent action
Example usage:
`GET user-api-dev.example.com/plaid/verify authorization: JWT`Rules for a great git commit message style
- 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.
Breaking Changes should start with the word BREAKING CHANGE: with a space or two newlines.
fix: 3357 Fix Payment Method For Entities Distributions
webdevelop-pro/general#3357
BREAKING CHANGE: Distributions API call must include entity type
Before `POST investment-api/distribution amount=123`
After `POST investment-api/distribution amount=123 **type=<type>**`
This code deploys fix for the distribution payments for entitiesUse the imperative mood in the subject line
Imperative mood just means “spoken or written as if giving a command or instruction”. A few examples:
- Clean your room
- Close the door
- Take out the trash
Writing this way can be a little awkward at first. We’re more used to speaking in the indicative mood, which is all about reporting facts. That’s why commit messages often end up reading like this:
Fixed bug with YChanging behavior of X
And sometimes commit messages get written as a description of their contents:
More fixes for broken stuffSweet new API methodsTo remove any confusion, here’s a simple rule to get it right every time.
A properly formed Git commit subject line should always be able to complete the following sentence:
If applied, this commit will your subject line here For example:
- If applied, this commit will refactor subsystem X for readability
- If applied, this commit will update getting started documentation
- If applied, this commit will remove deprecated methods
- If applied, this commit will release version 1.0.0
- If applied, this commit will merge pull request #123 from user/branch
Notice how this doesn’t work for the other non-imperative forms:
- If applied, this commit will fixed bug with Y
- If applied, this commit will changing behavior of X
- If applied, this commit will more fixes for broken stuff
- If applied, this commit will sweet new API methods
Remember: Use of the imperative is important only in the subject line. You can relax this restriction when you’re writing the body.
Information to insert into commit messages
- 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
References in commit messages
If the commit refers to an issue, add this information to the commit message header or body. The GitHub web platform automatically converts issue ids (e.g. organization/repo#123) to links referring to the related issue.