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 T27orRef T27, T56orFixes 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
@XXXComment Tags.
Suggested Emojis
| Emoji | Raw Emoji Code | Description |
|---|---|---|
:art: |
when improving the format/structure of the code | |
:newspaper: |
when creating a new file | |
:pencil: |
when performing minor changes/fixing the code or language | |
:racehorse: |
when improving performance | |
:books: |
when writing docs | |
:bug: |
when reporting a bug, with @FIXMEComment Tag |
|
:ambulance: |
when fixing a bug | |
:penguin: |
when fixing something on Linux | |
:apple: |
when fixing something on Mac OS | |
:checkered_flag: |
when fixing something on Windows | |
:fire: |
when removing code or files, maybe with @CHANGED Comment Tag |
|
:tractor: |
when change file structure. Usually together with |
|
:umbrella: |
when adding tests | |
:microscope: |
when adding code coverage | |
:green_heart: |
when fixing the CI build | |
:lock: |
when dealing with security | |
:arrow_up: |
when upgrading dependencies | |
:arrow_down: |
when downgrading dependencies | |
:fast_forward: |
when forward-porting features from an older version/branch | |
:rewind: |
when backporting features from a newer version/branch | |
:shirt: |
when removing linter/strict/deprecation warnings | |
:lipstick: |
when improving UI/Cosmetic | |
:wheelchair: |
when improving accessibility | |
:globe_with_meridians: |
when dealing with globalization/internationalization/i18n/g11n | |
:construction: |
WIP(Work In Progress) Commits, maybe with @REVIEW Comment Tag |
|
:gem: |
New Release | |
:bookmark: |
Version Tags | |
:tada: |
Initial Commit | |
:speaker: |
when Adding Logging | |
:mute: |
when Reducing Logging | |
:sparkles: |
when introducing New Features | |
:zap: |
when introducing Backward-InCompatible Features, maybe with @CHANGED Comment Tag |
|
:bulb: |
New Idea, with @IDEA Comment Tag |
|
:snowflake: |
changing Configuration, Usually together with |
|
:ribbon: |
Customer requested application Customization, with @HACK Comment Tag |
|
:rocket: |
Anything related to Deployments/DevOps | |
:elephant: |
PostgreSQL Database specific (Migrations, Scripts, Extensions, ...) | |
:dolphin: |
MySQL Database specific (Migrations, Scripts, Extensions, ...) | |
:leaves: |
MongoDB Database specific (Migrations, Scripts, Extensions, ...) | |
:bank: |
Generic Database specific (Migrations, Scripts, Extensions, ...) | |
:whale: |
Docker Configuration | |
:handshake: |
when Merge files |
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.