Selected Gitmojis
Summary
| emoji | code | usage | Angular Convention |
|---|---|---|---|
| π | :bug: |
bug fix | fix |
| π | :new: |
new feature | feat |
| π₯ | :fire: |
remove feature | n/a |
| π₯ | :boom: |
breaking changes | n/a |
| π | :lock: |
security fix | n/a |
| π¨ | :art: |
refactor | refactor |
| β‘οΈ | :zap: |
performance | perf |
| π― | :100: |
test | test |
| π | :memo: |
doc | docs |
| π€ | :zzz: |
chore | chore |
| π | :tada: |
release | n/a |
| π© | :poop: |
dirty | n/a |
| π₯ | :egg: |
Easter eggs | n/a |
Features
-
Only 13 types.
Do not need to open gitmoji.dev in the browser before writing a commit message.
-
Only use emojis with a short emoji code (less than five characters).
Commit message title is recommended to be less than 50 characters.
-
Most emojis have corresponding types in Angular convention.
-
Looks good and comprehensible in plain text.
Friendlier for infancy terminals and acceptable (I hope) for emoji haters.
Intersection between gitmoji and Atom style guide
- π¨
:art:when improving the format/structure of the code - π
:memo:when writing docs - π§
:penguin:when fixing something on Linux - π
:apple:when fixing something on macOS - π
:checkered_flag:when fixing something on Windows - π
:bug:when fixing a bug - π₯
:fire:when removing code or files - π
:green_heart:when fixing the CI build - β
:white_check_mark:when adding tests - π
:lock:when dealing with security - β¬οΈ
:arrow_up:when upgrading dependencies - β¬οΈ
:arrow_down:when downgrading dependencies
Conflicts between gitmoji and Atom style guide
| Meaning | gitmoji | Atom |
|---|---|---|
| Performance | β‘οΈ | π |
| Removing linter warnings | π¨ | π |
Comparison with Angular Convention
| Angular | gitmoji |
|---|---|
| feat | β¨ |
| fix | π |
| docs | π |
| style | π¨ |
| refactor | β»οΈ |
| perf | β‘οΈ |
| test | β |
| chore | π (deploy)γor π (CI) |
A reduced list of gitmoji
From the intersection, remove the following emojis:
-
Too long:
:penguin:, :checkered_flag:, :green_heart:, :white_check_mark:, :arrow_up:, :arrow_down:
-
Ambiguous:
- :green_heart:, I don't know why this is related to CI.
- :arrow_up:, this could mean "bump version".
- :arrow_down:, this could mean "regression".
-
Other:
:apple:, since both :penguin: and :checkered_flag: have been removed.
And add the following:
- β‘οΈ
:zap:for performance from gitmoji. - π
:new:for new features. I saw someone used this. - π―
:100:for tests, aiming at 100% branch coverage. - π€
:zzz:for chores. I think changes of this type is somehow boring. - π₯
:boom:for breaking changes from gitmoji. - π
:tada:for new release. Gitmoji uses this for project begin and π:bookmarkfor release. - π©
:poop:for dirty hacks and twisted workarounds from gitmoji ("Write bad code that needs to be improved."). - π₯
:egg:for Easter eggs from gitmoji.
Thus, the final list is:
- π¨
:art:when improving the format/structure of the code - π
:bug:when fixing a bug - π₯
:fire:when removing code or files - π
:memo:when writing docs - π
:new:when adding a new feature - π
:lock:when fixing security problems - β‘οΈ
:zap:when improving performance
- π―
:100:when adding or updating tests.
- π€
:zzz:for chores. I think changes of this type is somehow boring. - π₯
:boom:when introducing breaking changes. - π
:tada:when releasing a new version. - π©
:poop:when committing dirty hacks and twisted workarounds - π₯
:egg:when adding or updating an Easter egg.
Compared to Angular Convention, I removed the following types:
style: White-space, formatting etc. are unimportant. And most of the time, they do not deserve a separate commit.
I added the following types:
- A security issue (
:lock:) is a special kind of bug (:bug:). It is so important that I use a different emoji. - Removing a feature (
:fire:) belongs torefactorby Angular Convention's definition: "A code change that neither fixes a bug nor adds a feature". However, it makes sense to assume a refactor does not introduce a breaking change of API, while removing a feature always break the API. - Breaking changes (
:boom:) may have serious effects thus deserve a dedicated emoji. - Some projects have a change log file in the repository. Thus, a commit preparing a release typically starts with
:memo:. However, some projects do not maintain a change log file in the repository, but use the annotations of git tags. Then a commit preparing a release typically only involve things such as updating some version strings. Therefore, an extra emoji (:tada:) is added. :poop:is similar to:boom:, asking for special attention. These commits may be squashed or rebased on merging, if a clean history is preferred.:egg:itself can be considered as an Easter egg of gitmoji.
Change Log
0.1.0
-
Use
:100:for tests.:mag:should be considered as an alias of:100:.When displayed in plain text,
:mag:, I think it is hard to recognize "mag" is an abbreviation for "magnifier". On the other hands, I ensure all tests are passed in pre commit hook. Thus, most of the time, changes on tests come with changes in other types, e.g.:bug:or:new:. Test only changes thus are most likely improve test coverage. Therefore, I replace:mag:with:100:.Any tools supporting this selected gitmoji set should treat
:mag:as an alias of:100:, to maintain backward compatibility.
0.0.2022
The following new emojis are added:
-
:mag:for tests, and:zzz:for chores.I used to think that tests and build process are part of code logic. However, when reviewing changes, separation is a good thing.
-
:boom:for breaking changes, and:tada:for releases. -
:poop:for dirtiness and:egg:for Easter eggs.
0.0.0
The initial version.