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 π:bookmark
for 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 torefactor
by 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.