Git Commit Message
All Git Commit Messages MUST meet with this Text Format:
:emoji1: :emoji2: Subject
(Only One NewLine)
Message Body
(Only One NewLine)
Ref <###>
Rules
- Capitalize the Subject.
- Do not end the Subject line with a period.
- Message Subject SHOULD Begin with at-least One Emoji(see below for list of Suggested Emojis).
- Message Body SHOULD End with at-least One GitHub Issue/Phabricator Task ID Reference, Ex.
Issue #27
,Ref T27
orRef T27, T56
orFixes T8
. - Total Characters of the Subject Line MUST be Less than or Equal to 50 Chars Long.
- Wrap the Message body at 72 characters.
- Use Valid MarkDown format in Message Body.
- Use the Present Tense (“Add feature” not “Added feature”).
- Use the Imperative Mood (“Move cursor to…” not “Moves cursor to…”).
- Use the Message body to explain what and why vs. how.
- All WIP(Work In Progress) Commits MUST have the WIP Emoji(see below).
Notes
- All WIP Commits Should be Avoided!.
- Tasks with Commits in
Fixes T###
Format will be Automatically Closed as Resolved!. - There is a Space Character between Multiple Emojis!.
- There is NO New-Line After the Task ID Reference Line.
- Every Raw Emoji Text(
:emoji:
) is Counted as One Char!. - See ToDo Grammar StyleGuide for more Information on
@XXX
Comment Tags.
Suggested Emojis
Emoji | Raw Emoji Code | Description |
---|---|---|
:art: | :art: |
when improving the format/structure of the code |
:racehorse: | :racehorse: |
when improving performance |
:books: | :books: |
when writing docs |
:bug: | :bug: |
when reporting a bug, with @FIXME Comment Tag |
:ambulance: | :ambulance: |
when fixing a bug |
:penguin: | :penguin: |
when fixing something on Linux |
:apple: | :apple: |
when fixing something on Mac OS |
:checkered_flag: | :checkered_flag: |
when fixing something on Windows |
:fire: | :fire: |
when removing code or files, maybe with @CHANGED Comment Tag |
:umbrella: | :umbrella: |
when adding tests |
:green_heart: | :green_heart: |
when fixing the CI build |
:lock: | :lock: |
when dealing with security |
:arrow_up: | :arrow_up: |
when upgrading dependencies |
:arrow_down: | :arrow_down: |
when downgrading dependencies |
:fast_forward: | :fast_forward: |
when forward-porting features from an older version/branch |
:rewind: | :rewind: |
when backporting features from a newer version/branch |
:shirt: | :shirt: |
when removing linter/strict/deprecation warnings |
:lipstick: | :lipstick: |
when improving UI/Cosmetic |
:wheelchair: | :wheelchair: |
when improving accessibility |
:globe_with_meridians: | :globe_with_meridians: |
when dealing with globalization/internationalization/i18n/g11n |
:construction: | :construction: |
WIP(Work In Progress) Commits, maybe with @REVIEW Comment Tag |
:gem: | :gem: |
New Release |
:bookmark: | :bookmark: |
Version Tags |
:tada: | :tada: |
Initial Commit |
:speaker: | :speaker: |
when Adding Logging |
:mute: | :mute: |
when Reducing Logging |
:sparkles: | :sparkles: |
when introducing New Features |
:zap: | :zap: |
when introducing Backward-InCompatible Features, maybe with @CHANGED Comment Tag |
:bulb: | :bulb: |
New Idea, with @IDEA Comment Tag |
:snowflake: | :snowflake: |
changing Configuration, Usually together with :penguin: or :ribbon: or :rocket: |
:ribbon: | :ribbon: |
Customer requested application Customization, with @HACK Comment Tag |
:rocket: | :rocket: |
Anything related to Deployments/DevOps |
:elephant: | :elephant: |
PostgreSQL Database specific(Migrations, Scripts, Extensions, …) |
:dolphin: | :dolphin: |
MySQL Database specific(Migrations, Scripts, Extensions, …) |
Ask to Be Creative!
Tools
There is Also a nifty CLI tool to aid in standardizing commit messages based on this document, thanks to @jakeasmith.