๐ UPDATE 1: You can now access the underlying dataset of this post via git-emoji/dataset-js repository on GitHub. It's also available as a NPM package; @git-emoji/dataset-js
.
๐ UPDATE 2: This is now available as a VS Code extension, named Git-Emoji. You can install it from within VS Code or via extensions marketplace. You can also see this short blog post on this new extension.
I have to confess that I'm madly in love with emojis. They're cute, little digital beings that convey your emotions or meaning far better/deeper/shorter than words. Using them in git commit messages was a truly brilliant idea from whom we'd never know. Speaking of commit messages, it's obvious we're not going to leverage the emotional charge of the emojis --at least for now-- but their terseness and excellent readability is their best merit we could use. Let alone their diversity, wide availability, and text nature.
The problem with emojis
As a big fan, I use them almost everywhere I can replace them for words, though sometimes it's a little difficult to find the right emoji. When it comes to writing git commit messages, people won't feel good for wasting 15 minutes looking for the best emoji on the context. That's one reason, I guess, that emojis are yet to grow popular. There are few cases that our exact intention easily matches with an emoji. In most cases you have to rephrase, rethink or reshape your words to find that hidden one. I get it. That's why I started to write an article on the subject to list some of my favorite emojis that you'll find extremely useful in your day-to-day experience.
Emoji rock stars
I myself first saw this neat GitHub Gist on the emoji recommendations. The author, Franรงois, did cover a wide range of situations. In the beginning, I've been trying to stick with them but sometimes it was hard to find my intent within the list. So, I began to deliberately collect my own emoji rock stars.
This is my list:
Emojis | Example commit message(s) |
---|---|
๐ :tada:
|
First commit |
๐จ :hammer:
|
Update code Improve code |
๐ :scroll: โ๏ธ :pencil: ๐ :books: ๐ :memo: ๐ :book:
|
Update README.md Add docs |
๐ :tshirt: ๐ :necktie:
|
Apply linter Format code |
โ๏ธ :alembic: ๐งช :test_tube:
|
Add tests Update unit tests |
๐ถ :baby:
|
Add basic implementation Add partial impl. |
๐
:medal_sports:
|
Finish implementation |
โคด๏ธ :arrow_heading_up:
|
Upgrade dependency Upgrade version |
โคต๏ธ :arrow_heading_down:
|
Downgrade dependency Downgrade version |
๐จ :art: ๐ :nail_care: ๐ :lipstick:
|
Improve visuals Enhance UI/UX |
โฟ๏ธ :wheelchair:
|
Improve accessibility features |
โจ :sparkles: ๐ฟ :shower:
|
Clean code |
๐ฅ :fire: ๐ซ :gun: โ๏ธ :scissors:
|
Delete directory Remove unnecessary files |
๐ฉ :poop: ๐ :spaghetti:
|
Mess up legacy code Apply dirty patch |
โก๏ธ :zap:
|
Introduce breaking changes |
๐ :bug:
|
Fix bug |
๐ง :construction:
|
Apply temporary patch Improve work in progress |
๐ :ambulance:
|
Apply urgent fix Fix critical bug |
๐ :crescent_moon:
|
Update nightly builds config Create background jobs |
๐ฐ :rabbit:
|
Add RabbitMQ requirements |
๐ :whale:
|
Add Dockerfile Update docker-compose |
:octocat: |
Add .github dir (only on github.com ) |
๐ฆ :fox_face:
|
Add .gitlab dir Update .gitlab-ci.yml |
๐ :gift: ๐ฆ :package:
|
Add new dependencies Add new feature |
๐ :bell:
|
Add alarm/warning |
๐ :no_bell: ๐ :mute:
|
Silence alarms/warnings |
๐ :closed_lock_with_key: ๐ :lock: ๐ก :shield:
|
Improve security Set more permissions |
๐ :unlock: ๐ :key:
|
Lift permissions Remove restrictions |
๐ :file_folder:
|
Change dir structure |
โ๏ธ :watch: โฑ :stopwatch:
|
Add profiler Add performance measurements |
๐ :bar_chart:
|
Improve performance |
๐ :bookmark:
|
Update version |
๐ :school_satchel: ๐ :rocket:
|
Build and pack Make ready for deployment/launch |
๐ :chart_with_upwards_trend:
|
Improve performance |
๐ :chart_with_downwards_trend:
|
Minimize resource usage |
๐ :paperclip:
|
Attach doc/file |
โ๏ธ :airplane:
|
Migrate to new interface Create data migration |
๐ :checkered_flag:
|
Finish impl Meet roadmap checkpoint |
๐ญ :performing_arts:
|
Merge branches Merge two modules |
โ๏ธ :anchor:
|
Put TODO anchors |
๐ฉ :triangular_flag_on_post:
|
Meet roadmap checkpoint |
ยฉ๏ธ :copyright: ยฎ๏ธ :registered:
|
Add LICENSE file Update LICENSE |
Emojis by context
Of course knowing various emojis like the list above helps a lot, but more often that not I find myself trying to recall an emoji that fits best with my already written (or thought of) commit message. Not always would you find the closest emoji within a list like the one you've seen. That's when you'd rather have a subject-/context-oriented table in which you could easily find the best candidates for your intent. I'm talking about such a table:
Emojis | Context (verb/noun/adjective) |
---|---|
๐:bug: ๐จ :hammer: ๐ง :wrench: ๐ :clamp: |
correct fix bugfix |
๐:shell: ๐ :open_hands: ๐ฆ :package: ๐ :gift: ๐ณ :ballot_box: ๐ :card_file_box: ๐ฅ :inbox_tray: ๐ค :outbox_tray: |
wrap hold cover shell safe box contain |
๐ญ:performing_arts: ๐ค :handshake: ๐ :clamp: ๐ :paperclip: ๐ :paperclips: ๐ :link: ๐ :twisted_rightwards_arrows: ๐ :arrows_clockwise: ๐ :arrows_counterclockwise: ๐ฅ :busts_in_silhouette: |
merge mix attach convolve append prepend unify combine distill handshake |
๐ฅ:fire: ๐ซ :gun: ๐ฃ :bomb: ๐ :wastebasket: ๐ฎ :put_litter_in_its_place: โฐ๏ธ :coffin: โ ๏ธ :skull_and_crossbones: ๐ :skull: โ๏ธ :latin_cross: โ :x: โ :negative_squared_cross_mark: โ๏ธ :heavy_multiplication_x: ๐ค :outbox_tray: โ๏ธ :scissors: ๐ช :knife: โ๏ธ :crossed_swords: ๐ :card_file_box: ๐ :file_cabinet: |
remove delete drop cancel exclude archive |
๐ถ:signal_strength: ๐ :chart_with_upwards_trend: ๐ :chart_with_downwards_trend: โ๏ธ :arrow_up_down: โฌ๏ธ :arrow_up: โฌ๏ธ :arrow_down: ๐ฝ :plate_with_cutlery: ๐ข :1234: |
order sort arrange reorder |
๐จ:hammer: ๐ง :wrench: ๐ :medal_military: โจ :sparkles: ๐ฅ :1st_place_medal: ๐จ :art: ๐ :paintbrush: ๐ :lipstick: ๐ :nail_care: ๐ :high_heel: ๐ :rainbow: ๐ฆ :bird: |
improve enhance upgrade refresh beauty embellish cosmetics |
๐:syringe: ๐จ :hammer: ๐ง :wrench: โ๏ธ :heavy_check_mark: โ :white_check_mark: โ๏ธ :ballot_box_with_check: ๐ :pen: |
apply set put commit register confirm |
โ:heavy_plus_sign: ๐ :paperclip: ๐ :paperclips: ๐ฆ :package: ๐ :gift: ๐ :checkered_flag: โฌ๏ธ :arrow_up: ๐ฑ :seedling: โซ :arrow_double_up: ๐ฅ :inbox_tray: ๐ถ :baby: ๐ค :baby_chick: ๐ผ :baby_symbol: ๐ :new: ๐ผ :blossom: โจ :sparkles: โ๏ธ :sparkle: ๐ :electric_plug: |
add insert update upgrade increase register append prepend feature |
๐:shirt: / :tshirt: ๐ :medal_military: ๐ :straight_ruler: ๐ :triangular_ruler: ๐ฟ :shower: ๐ :pill: ๐จ :art: ๐ :paintbrush: ๐ :lipstick: ๐ :nail_care: ๐ :high_heel: ๐ :rainbow: |
lint clean format style refactor |
๐:building_construction: ๐จ :hammer: ๐ง :wrench: ๐ :hammer_and_wrench: โป๏ธ :recycle: |
refactor rewrite reestablish reimplement rethink recycle |
โ๏ธ:alembic: โฑ :stopwatch: ๐ :mag: ๐ :mag_right: ๐ต :detective: ๐ญ :telescope: ๐ฌ :microscope: ๐ :clamp: |
test assess exam check review rethink supervise fixture |
โ๏ธ:envelope: ๐ค :outbox_tray: ๐ก :satellite: ๐ :rocket: โ๏ธ :airplane: ๐ฉ :small_airplane: ๐ :helicopter: ๐น :bow_and_arrow: ๐ฐ :newspaper: ๐ :newspaper_roll: ๐บ :tv: ๐ป :radio: ๐ค :microphone: ๐ข :loudspeaker: ๐ :speaker: |
send move out publish transform give produce |
โ:question: โ :grey_question: ๐ด :fork_and_knife: ๐ฅ :inbox_tray: |
ask request inquiry query fetch receive take |
๐:ear: ๐ง :headphone: โณ :hourglass_flowing_sand: โธ :pause_button: ๐จ :incoming_envelope: โ๏ธ :envelope: โ๏ธ :phone: ๐ฒ :calling: |
consume listen subscribe register await callback standby |
โฑ:stopwatch: โฒ :timer: โฐ :alarm_clock: ๐ :calendar: ๐ :spiral_calendar: ๐ :runner: |
job cron schedule time period repeat repetitive |
๐:mag: ๐ :mag_right: ๐ฆ :flashlight: ๐ต :detective: ๐ญ :telescope: ๐ฌ :microscope: ๐ถ :dog: ๐ :dog2: ๐ :nose: |
search find lookup browse query select |
โฌ๏ธ:arrow_down: โฌ :arrow_double_down: โคต๏ธ :arrow_heading_down: ๐ :thumbsdown: |
rollback downgrade reset repopulate revert undo |
๐:scroll: ๐ :pencil: โ๏ธ :writing_hand: ๐ฐ :newspaper: ๐ :newspaper_roll: ๐ :clipboard: ๐ :book: ๐ :bookmark_tabs: ๐ :books: ๐ :blue_book: ๐ :orange_book: ๐ :notebook: ๐ :pen: โ๏ธ :pencil2: ๐จ :printer: ๐ :fax: ๐ฌ :speech_balloon: |
log record store draft note text README guide manual comment |
โ ๏ธ:warning: โ :hand: โ๏ธ :heavy_exclamation_mark: โ๏ธ :exclamation: โ :grey_exclamation: |
avoid prevent caution safe look out beware notice warning |
๐:stop_sign: โฃ๏ธ :biohazard: ๐ :skull: โ ๏ธ :skull_and_crossbones: ๐ฅ :fire: โน :stop_button: โฐ๏ธ :coffin: โ๏ธ :latin_cross: โ๏ธ :heavy_multiplication_x: |
error exception hazard danger stop crash abort deadlock |
๐จ:man: ๐ฉ :woman: |
user human operator |
๐บ :tv: ๐ฑ :iphone: ๐ผ :framed_picture: ๐ :paintbrush: โ๏ธ :black_nib: ๐จ :art: ๐ :rainbow: |
UI UX HTML CSS front-end view face canvas image picture |
โธ๏ธ:wheel_of_dharma: โ๏ธ :gear: ๐ :control_knobs: ๐ :hammer_and_wrench: โ :hammer_and_pick: ๐จ :hammer: ๐ง :wrench: ๐ :clamp: ๐ข :1234: ๐ก :abcd: ๐ :capital_abcd: |
config setup parameter argument reference fixture |
๐คก:clown: ๐ :womans_hat: ๐ญ :performing_arts: ๐ฌ :clapper: ๐ :new_moon_with_face: ๐ถ :dark_sunglasses: ๐ :carousel_horse: ๐ผ :baby_bottle: ๐ถ :baby: ๐ค :baby_chick: ๐ผ :baby_symbol: |
mock fake stub test assess impersonate improvise simulate emulate behave |
๐:key: ๐ :old_key: ๐ท :label: ๐ :link: ๐ถ :baby: ๐ค :baby_chick: ๐ผ :briefcase: ๐ :file_folder: ๐ :open_file_folder: |
variable field property key item element |
๐:runner: ๐ด :bicyclist: ๐ต :mountain_bicyclist: ๐คธโโ :man_cartwheeling: ๐คธโโ :woman_cartwheeling: ๐ฌ :clapper: ๐ข :loudspeaker: ๐ :speaker: ๐ :car: ๐ :rocket: โ๏ธ :airplane: ๐ฉ :small_airplane: ๐จโ๐ญ :man_factory_worker: ๐ฉโ๐ญ :woman_factory_worker: |
method function behavior action paly execute run |
๐:stop_sign: โ๏ธ :no_entry: ๐ซ :no_entry_sign: ๐ท :no_pedestrians: ๐ณ :no_bicycles: ๐ฑ :non-potable_water: ๐ก :shield: โ ๏ธ :warning: โ๏ธ :heavy_multiplication_x: โ :hand: โน :stop_button: ๐ฐ :european_castle: ๐จ :rotating_light: ๐ :police_car: ๐ฎ :policeman: ๐ฎโโ :policewoman: ๐ :oncoming_police_car: โ๏ธ :heavy_exclamation_mark: ๐จโโ :man_judge: ๐ฉโโ :woman_judge: ๐ฝ :alien: |
limit bound line threshold ceiling floor restrict constrain restrain |
๐:spiral_notepad: ๐ :notebook: ๐ :ruler: ๐ :triangular_ruler: ๐ค :outbox_tray: ๐ฆ :package: ๐ :mag: ๐ :mag_right: ๐ต :detective: ๐ข :1234: ๐ก :abcd: ๐ :capital_abcd: ๐ :open_file_folder: ๐ :shell: ๐ฐ :potable_water: ๐ฅ :desktop_computer: ๐จโ๐ซ :man_teacher: ๐ฉโ๐ซ :woman_teacher: |
detail info data body content |
๐ฆ:package: ๐ฅ :inbox_tray: ๐ :syringe: ๐พ :floppy_disk: ๐ฟ :cd: โจ๏ธ :keyboard: ๐ :key: ๐ :old_key: ๐ :closed_lock_with_key: ๐ :lock_with_ink_pen: ๐ :lock: ๐ฆ :bank: โ๏ธ :writing_hand: ๐ :clipboard: ๐ :notebook: ๐ :spiral_notepad: ๐ :pencil: ๐ :pen: โ๏ธ :pencil2: ๐จ :printer: ๐ :fax: ๐ :film_strip: |
store persist save keep serialize write buffer memory |
๐ค:outbox_tray: ๐ :eyeglasses: ๐ :ear: ๐ :key: ๐ :old_key: |
load fetch read deserialize query |
๐:lock: ๐ :closed_lock_with_key: ๐ :lock_with_ink_pen: ๐ก :shield: ๐ :guardsman: ๐โโ :guardswoman: |
security ACL shield protect antivirus guard encrypt scramble hash sign clutter secure code hide conceal secret lock restrict cover |
๐:key: ๐ :open_file_folder: ๐ :open_book: ๐ฆ :flashlight: ๐บ :tv: ๐ฐ :newspaper: ๐ :speaker: ๐ข :loudspeaker: ๐ :free: |
decrypt unscramble decode show open reveal unveil unleash uncover release free authentication authorization |
๐:globe_with_meridians: ๐บ :world_map: ๐ :earth_africa: ๐ :earth_americas: ๐ :earth_asia: ๐ธ :spider_web: ๐ :cityscape: ๐ฃ :post_office: ๐ฎ :postbox: |
URL URI path address location access route identifier |
๐ผ:framed_picture: ๐บ :tv: ๐ฅ :desktop_computer: ๐ฝ :film_projector: ๐ฆ :cinema: ๐จ :printer: ๐ :ruler: ๐ :triangular_ruler: ๐ :pen: โ๏ธ :pencil2: ๐จ :art: ๐ :paintbrush: |
show display visible illustrate demonstrate paint draw |
โ๏ธ:scissors: ๐ :horse_racing: ๐ :racehorse: ๐ :monkey: ๐ :racing_car: |
skip ignore neglect jump overlook unfollow forget |
โคด๏ธ:arrow_heading_up: โป๏ธ :recycle: ๐ :arrows_clockwise: ๐ :arrows_counterclockwise: ๐ :repeat: ๐ :repeat_one: โฎ :previous_track_button: ๐ :building_construction: ๐ก :ferris_wheel: |
retry restart reboot rerun restablish reattempt reconstruct reimplement refactor |
๐:runner: ๐ :car: ๐ :racing_car: ๐ :bullettrain_front: ๐ :light_rail: โ๏ธ :airplane: ๐ :rocket: ๐ซ :flight_departure: ๐ฉ :cloud_with_lightning: โ๏ธ :open_umbrella: โ๏ธ :umbrella: ๐ :racehorse: ๐ :horse_racing: ๐ฅ :boom: ๐ :volcano: ๐ :sunrise: โฏ :play_or_pause_button: ๐ :building_construction: |
run execute boot establish try attempt apply drive move start begin ON launch construct implement init initialize |
โน:stop_button: โธ :pause_button: ๐ :stop_sign: โ :hand: โ๏ธ :heavy_exclamation_mark: ๐ :skull: โ ๏ธ :skull_and_crossbones: ๐ฌ :flight_arrival: ๐ :checkered_flag: โ๏ธ :heavy_multiplication_x: โ :negative_squared_cross_mark: ๐ด :mobile_phone_off: ๐ซ :gun: โฐ๏ธ :coffin: โ๏ธ :latin_cross: ๐ฃ :bomb: |
stop end pause abort OFF out wait hold holdup suspend suppress silence silent kill interrupt destruct dispose |
๐:school_satchel: ๐ :rocket: โ๏ธ :airplane: โฌ๏ธ :arrow_up: โซ :arrow_double_up: ๐ผ :arrow_up_small: ๐ :up: ๐ข :loudspeaker: ๐ :speaker: ๐ฏ :postal_horn: ๐ :balloon: ๐ :confetti_ball: ๐ :tada: ๐ฐ :newspaper: ๐ :newspaper_roll: ๐ก :satellite: ๐ฐ :artificial_satellite: |
deploy install setup launch |
๐:point_left: ๐ :point_right: โ๏ธ :point_up: ๐ :point_down: ๐ฃ :footprints: ๐พ :paw_prints: โคต๏ธ :arrow_heading_down: โคด๏ธ :arrow_heading_up: โช๏ธ :arrow_right_hook: โฉ๏ธ :leftwards_arrow_with_hook: ๐ :twisted_rightwards_arrows: โฒ๏ธ :fountain: โป๏ธ :recycle: ๐ :repeat: ๐ :repeat_one: ๐ฑ :currency_exchange: |
redirect transform change direct guide align |
0๏ธโฃ:zero: โค๏ธ :heart: ๐ :heart_decoration: ๐ :sunrise_over_mountains: โ๏ธ :sunny: ๐ฑ :seedling: ๐พ :ear_of_rice: ๐ป :computer: ๐ :house: ๐ก :house_with_garden: ๐ฆ :butterfly: โ๏ธ :gear: ๐ฏ :candle: ๐ผ :blossom: ๐ :fish: ๐ :place_of_worship: โช๏ธ :church: ๐ :mosque: |
base ground floor core center middle heart root home origin |
๐:skull: โ ๏ธ :skull_and_crossbones: โฃ๏ธ :hazard: โฃ๏ธ :biohazard: ๐ณ :hole: ๐ซ :gun: ๐ :volcano: ๐ฅ :boom: ๐ :snake: ๐ธ :money_with_wings: ๐ค :fight: ๐คผโโ :men_wrestling: ๐คผโโ :women_wrestling: ๐ฅ :boxing_glove: ๐ฅ :hospital: ๐ :ambulance: |
trespass breach vulnerability access hole penetrate spy listen hack compromise reveal |
๐ฆ:package: ๐ :card_file_box: ๐ :file_cabinet: ๐ :electric_plug: ๐ฒ :black_square_button: ๐ณ :white_square_button: โฌ๏ธ :white_large_square: โฌ๏ธ :black_large_square: ๐ฏ :honey_pot: ๐จ :hammer: ๐ :hammer_and_wrench: ๐ง :wrench: ๐ป :computer: ๐ฝ :minidisc: ๐ :paperclip: ๐ :paperclips: |
package dependency module library component plugin add-in plug object container image |
๐rainbow: ๐ฅ:pancakes: ๐ :burger: ๐ญ :hotdog: ๐ :pushpin: ๐ :round_pushpin: ๐คนโโ :man_juggling: ๐คนโโ :woman_juggling: |
middleware intermediate middleman dealer layer |
๐ธ:spider_web: ๐ถ :signal_strength: ๐ :bar_chart: ๐ :file_folder: ๐ :open_file_folder: ๐ณ :tree: ๐ :leaf: |
structure organize format tree leaf edge graph net network |
โ๏ธ:open_umbrella: โ๏ธ :umbrella: ๐ :camping: โ๏ธ :crossed_swords: ๐บ :world_map: ๐ :globe_with_meridians: |
cover range shadow area support resolve |
โป๏ธ:recycle: ๐ :repeat: ๐ :repeat_one: ๐ :arrows_clockwise: ๐ :arrows_counterclockwise: ๐ข :1234: ๐ก :abcd: ๐ :capital_abcd: |
loop while for do loopback repeat repetition iterate enumerate |
๐ง:construction: ๐จ :rotating_light: โ ๏ธ :warning: โ๏ธ :hourglass: โณ :hourglass_flowing_sand: โฒ :timer_clock: โฑ :stopwatch: ๐ฆ :vertical_traffic_light: ๐ฅ :traffic_light: |
temporary work in progress WIP pend wait suspend block hinder |
Look further
See emoji cheat sheet for a complete list of emojis that you can use on GitHub or other platforms.
Top comments (22)
I like using emojis on my commit names, but sadly our CI tool use the commit hash + commit name as identifier and it has some issues using commit names that contain emojis :(.
Well at least I can still put emojis on commit comments.
have a look at this website: gitmoji.carloscuesta.me/
I've come across gitmoji a few times now and then. Recently, I've also suggested a feature for some kind of contextual emoji search (like the second table in the article,) in the gitmoji-cli repo:
github.com/carloscuesta/gitmoji-cl...
Feel free to endorse the issue, if you think that'll help users, or comment your ideas below that thread. ๐
I use gitmoji.carloscuesta.me/
I've come across gitmoji a few times now and then. Recently, I've also suggested a feature for some kind of contextual emoji search (like the second table in the article,) in the gitmoji-cli repo:
github.com/carloscuesta/gitmoji-cl...
Feel free to endorse the issue, if you think that'll help users, or comment your ideas below that thread. ๐
I can't endorse gitmoji-cli enough. I think it's super convenient. I just do
git commit
, andgitmoji-cli
automatically (using a git hook) gives me an interactive prompt to choose the best emoji.It's quick and easy and I don't have to think much about which emoji to use.
It's a good article I wait for use with gitmoji-cli. I love emoji ๐
That's a great list to narrow down the choices, thanks for that. I think, emojis can be well used as a graphical way of tagging or categorizing. Not as replacement for github labels, but rather start the commit message with a single emoji to give an idea what it is about.
This way you could sort raw release logs which consist only of commit messages by text and have everything grouped that belongs together.
But I have to see this done in wild to know if it actually works :) I just had some ideas about it while reading your post.
Thank you. I'm totally agree with prefixing emojis in commit messages. I, myself, use emojis and the beginning of issue/pull requests, too.
That's a cool post! But since there are no general standardization for the usage of these emojis each team/project will determine their own definition/meaning. That will eventuate in one emoji having different meaning cross projects.
That is true. Although, in widespread use, especially on open source projects, community-based standards could emerge.
The plural of emoji is 'emoji'
No. I now checked with Google.
I guess it's complicated theatlantic.com/technology/archive...
this is cool usually i use gitmoji i dont know someone really put an effort to create a gitmoji like this good work pal
You're welcome.
I use commitizen to help insert emoji in every commit. (cz-emoji, actually)
Otherwise, I think it is better to use a good emoji IME, and insert the actual emoji, instead of the text.
I agree. The
:emoji:
notation gets in the way when you want to, for example, see the git logs in a terminal.Too bad there's no upside-down smiley. I would put that in every message ๐
For me, 4 out of every 5 commit messages begin with the hammer emoji, i.e., ๐จ. So, you can use your own fav. ๐
Nice post!
Thanks. ๐