{"id":13464742,"url":"https://github.com/slashsbin/styleguide-git-commit-message","last_synced_at":"2025-05-16T19:04:36.816Z","repository":{"id":69685710,"uuid":"50177359","full_name":"slashsbin/styleguide-git-commit-message","owner":"slashsbin","description":"/sBin/StyleGuide/Git/CommitMessage","archived":false,"fork":false,"pushed_at":"2024-04-18T06:23:59.000Z","size":55,"stargazers_count":1011,"open_issues_count":0,"forks_count":72,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-05-13T04:39:28.837Z","etag":null,"topics":["commit","commits","emoji","emojify","emojis","gitmoji","style-guide","styleguide"],"latest_commit_sha":null,"homepage":"http://slashsbin.dev/styleguide-git-commit-message/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/slashsbin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-01-22T11:27:00.000Z","updated_at":"2025-05-13T01:44:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"a5e18bbd-d633-4988-93f2-b11225bd6cd3","html_url":"https://github.com/slashsbin/styleguide-git-commit-message","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slashsbin%2Fstyleguide-git-commit-message","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slashsbin%2Fstyleguide-git-commit-message/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slashsbin%2Fstyleguide-git-commit-message/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slashsbin%2Fstyleguide-git-commit-message/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/slashsbin","download_url":"https://codeload.github.com/slashsbin/styleguide-git-commit-message/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254592368,"owners_count":22097011,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["commit","commits","emoji","emojify","emojis","gitmoji","style-guide","styleguide"],"created_at":"2024-07-31T14:00:49.601Z","updated_at":"2025-05-16T19:04:36.762Z","avatar_url":"https://github.com/slashsbin.png","language":"HTML","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://git-scm.com/images/logos/downloads/Git-Logo-1788C.png\" alt=\"Git\" height=\"128\"\u003e\n  \u003cspan\u003e\u0026amp;\u003c/span\u003e\n  \u003cimg src=\"https://github.githubassets.com/images/icons/emoji/unicode/1f984.png\" alt=\"Unicorn\" height=\"128\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://en.wikipedia.org/wiki/Emoji#Unicode_blocks\"\u003e\u003cimg src=\"https://img.shields.io/badge/emoji-%F0%9F%A6%84%20%F0%9F%92%9F-lightgrey.svg\" alt=\"Powered by Emojis!\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/slashsbin/styleguide-git-commit-message/graphs/contributors\"\u003e\u003cimg src=\"https://img.shields.io/github/contributors/slashsbin/styleguide-git-commit-message.svg\" alt=\"GitHub contributors\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/slashsbin/styleguide-git-commit-message/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/slashsbin/styleguide-git-commit-message.svg\" alt=\"GitHub stars\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/slashsbin/styleguide-git-commit-message/blob/master/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/slashsbin/styleguide-git-commit-message.svg\" alt=\"license\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# Git Commit Message StyleGuide\n\n##### TOC\n- [About](#about)\n- [Commit Message Format](#commit-message-format)\n- [Suggested Emojis](#suggested-emojis)\n- [Tools](#tools)\n- [Related Ideas](#related-ideas)\n- [Fun Emoji Usages](#fun-emoji-usages)\n- [Contributing](#contributing)\n- [License](#license)\n\n\n## About\nThis is an attempt to standardize the format of commit messages, for the sake of **uniformity** in git log, **best practices** for writing commit messages \u0026 **fun**!\n\nUsing emojis at the beginning of commit messages, other than being fun, provides a simple way to indicate the intention of that commit, an ease for the eyes when browsing/reviewing git log. It's also a simple measure of the fact that how much that commit is focused on a single purpose, which is a good practice.\n\nIf these rules and/or using emojis is an [overkill](/../../issues/21) for your productivity or simply losing its purposes, please tailor them to your needs or don't use them.\n\n### Summary of the reasons for these conventions:\n- Fun!\n- Simple navigation through git history (e.g. ignoring style changes).\n- Automatic generating of the changelog.\n\n\n## Commit Message Format\n\n```\n\u003ctype\u003e(\u003cscope\u003e): \u003csubject\u003e\n\n\u003cbody\u003e\n\n\u003cfooter\u003e\n```\n\n### Message Subject(first line)\n- Capitalize the `\u003csubject\u003e`.\n- Do not end the first line with a period.\n- Total characters of the first line **MUST** be _Less_ than or _Equal_ to **50** characters Long.\n- Use the **present tense** (\"Add feature\" not \"Added feature\").\n- Use the **imperative mood** (\"Move cursor to...\" not \"Moves cursor to...\").\n- Use `\u003ctype\u003e` to identify what type of changes introduced in this commit; Allowed `\u003ctype\u003e` keywords:\n  - An Emoji(see below for [list of Suggested Emojis](#suggested-emojis))\n  - Or a Text:\n    - feat: new feature for the user(or :sparkles: emoji)\n    - fix: bug fix for the user(or :ambulance: emoji)\n    - docs: changes to the documentation(or :books: emoji)\n    - style: formatting, missing semi colons, etc; no production code change(or :art: emoji)\n    - refactor: refactoring production code, eg. renaming a variable(or :tractor: emoji)\n    - test: adding missing tests, refactoring tests; no production code change(or :microscope: emoji)\n    - chore: updating grunt tasks etc; no production code change\n- If you need more than one keyword or emoji to use, you should probably think twice!. This usally means you need to break this commit into more smaller commits; If thats not the case then separate each emoji with a space.\n- Use `\u003cscope\u003e` to identify which component this `\u003ctype\u003e` is related to; Example `\u003cscope\u003e` values:\n  - init\n  - runner\n  - watcher\n  - config\n  - web-server\n  - proxy\n  - etc.\n- The `\u003cscope\u003e` can also be empty (e.g. if the change is a global or difficult to assign to a single component), in which case the parentheses are omitted.\n\n### Message Body\n- Includes **motivation** for the change and contrasts with previous behavior.\n- Use the body to explain **whats** and **whys** vs. *hows*.\n- Wrap each line of the body at **72** characters.\n\n### Message Footer\n- Reference issues this commit is related to with the status of that Issue; Ex. `Issue #27`, `Ref T27` or `Ref T27, T56` or `Fixes T8`.\n- Supported issue tracker status keywords:\n  - Fixes\n  - Fixed\n  - Closes\n  - Closed\n  - Resolves\n  - Resolved\n  - Ref\n  - Issue\n  - Issues\n- More info on issue tracker status keywords:\n  - [GitHub Issues](https://help.github.com/articles/closing-issues-using-keywords/)\n  - [GitLab Issues](https://docs.gitlab.com/ee/user/project/issues/automatic_issue_closing.html)\n  - [Phabricator Tasks](https://secure.phabricator.com/book/phabricator/article/diffusion_autoclose/)\n- It's also [recommended](/../../issues/19) to use _Full URL to the Issues_, instead of just issue ID Number; Doing so will ease browsing issues from terminal.\n- In the case of multiple issues separate them with commas, Ex. `Closes #27, #56`.\n\n### Notes\n- Use valid [MarkDown](https://daringfireball.net/projects/markdown/basics) format in the `\u003cbody\u003e`.\n- All **WIP**(Work In Progress) commits **SHOULD** have the :construction: Emoji.\n- All **WIP** commits **SHOULD** be avoided!.\n- Referencing Issues by using special keywords like `Fixes` or `Resolves` will mark them as closed automatically! For more  information about automatic issue closing using ketwords see their documentation(linked above).\n- There is **NO** new-line after the `\u003cfooter\u003e`.\n- Every emoji text(`:emoji:`) is counted as one character!.\n- See [ToDo Grammar StyleGuide](https://github.com/slashsbin/styleguide-todo-grammar) for more Information on `@XXX` Comment Tags.\n\n\n## Suggested Emojis\n\n| Emoji | Raw Emoji Code | Description |\n|:---:|:---:|---|\n| :art: | `:art:` | when improving the **format**/structure of the code |\n| :newspaper: | `:newspaper:` | when creating a **new file** |\n| :pencil: | `:pencil:` | when **performing minor changes/fixing** the code or language |\n| :racehorse: | `:racehorse:` | when improving **performance** |\n| :books: | `:books:` | when writing **docs** |\n| :bug: | `:bug:` | when reporting a **bug**, with [`@FIXME`](https://github.com/slashsbin/styleguide-todo-grammar#bug-report)Comment Tag |\n| :ambulance: | `:ambulance:` | when fixing a **bug** |\n| :penguin: | `:penguin:` | when fixing something on **Linux** |\n| :apple: | `:apple:` | when fixing something on **Mac OS** |\n| :checkered_flag: | `:checkered_flag:` | when fixing something on **Windows** |\n| :fire: | `:fire:` | when **removing code** or files, _maybe_ with `@CHANGED` Comment Tag |\n| :tractor: | `:tractor:` | when **change file structure**. Usually together with :art: |\n| :hammer: | `:hammer:` | when **refactoring** code |\n| :umbrella: | `:umbrella:` | when adding **tests** |\n| :microscope: | `:microscope:` | when adding **code coverage** |\n| :green_heart: | `:green_heart:` | when fixing the **CI** build |\n| :lock: | `:lock:` | when dealing with **security** |\n| :arrow_up: | `:arrow_up:` | when upgrading **dependencies** |\n| :arrow_down: | `:arrow_down:` | when downgrading **dependencies** |\n| :fast_forward: | `:fast_forward:` | when **forward-porting features** from an older version/branch |\n| :rewind: | `:rewind:` | when **backporting features** from a newer version/branch |\n| :shirt: | `:shirt:` | when removing **linter**/strict/deprecation warnings |\n| :lipstick: | `:lipstick:` | when improving **UI**/Cosmetic |\n| :wheelchair: | `:wheelchair:` | when improving **accessibility** |\n| :globe_with_meridians: | `:globe_with_meridians:` | when dealing with **globalization**/internationalization/i18n/g11n |\n| :construction: | `:construction:` | **WIP**(Work In Progress) Commits, _maybe_ with `@REVIEW` Comment Tag |\n| :gem: | `:gem:` | New **Release** |\n| :egg: | `:egg:` | New **Release** with Python egg|\n| :ferris_wheel: | `:ferris_wheel:` | New **Release** with Python wheel package |\n| :bookmark: | `:bookmark:` | Version **Tags** |\n| :tada: | `:tada:` | **Initial** Commit |\n| :speaker: | `:speaker:` | when Adding **Logging** |\n| :mute: | `:mute:` | when Reducing **Logging** |\n| :sparkles: | `:sparkles:` | when introducing **New** Features |\n| :zap: | `:zap:` | when introducing **Backward-InCompatible** Features, _maybe_ with `@CHANGED` Comment Tag |\n| :bulb: | `:bulb:` | New **Idea**, with `@IDEA` Comment Tag |\n| :snowflake: | `:snowflake:` | changing **Configuration**, Usually together with :penguin: or :ribbon: or :rocket: |\n| :ribbon: | `:ribbon:` | Customer requested application **Customization**, with `@HACK` Comment Tag |\n| :rocket: | `:rocket:` | Anything related to Deployments/**DevOps** |\n| :elephant: | `:elephant:` | **PostgreSQL** Database specific (Migrations, Scripts, Extensions, ...)  |\n| :dolphin: | `:dolphin:` | **MySQL** Database specific (Migrations, Scripts, Extensions, ...) |\n| :leaves: | `:leaves:` | **MongoDB** Database specific (Migrations, Scripts, Extensions, ...) |\n| :bank: | `:bank:` | **Generic Database** specific (Migrations, Scripts, Extensions, ...) |\n| :whale: | `:whale:` | **Docker** Configuration |\n| :handshake: | `:handshake:` | when **Merge files** |\n| :cherries: | `:cherries:` | when Commit Arise from one or more [**Cherry-Pick**](https://git-scm.com/docs/git-cherry-pick) Commit(s) |\n\n\n## Tools\n\n- [Commit](https://github.com/jakeasmith/commit)(CLI): This is a nifty CLI tool to aid in standardizing commit messages based on this document, thanks to @jakeasmith.\n- [gitMoji](https://gitlab.com/louisgrasset/git-moji)(Firefox \u0026 Chrome Extension): Enhance your commits with emojis!, thanks to [@louisgrasset](https://twitter.com/louisgrasset).\n\n\n## Related Ideas\n\n- [gitmoji](https://gitmoji.dev/): An emoji guide for your commit messages.\n- [Conventional Commits](https://www.conventionalcommits.org/): A specification for adding human and machine readable meaning to commit messages.\n- [Keep a Changelog](https://keepachangelog.com/): Don’t let your friends dump git logs into changelogs.\n\n\n## Fun Emoji Usages\n- [CodeEmoji](https://codemoji.org/): Mozilla’s Codemoji enciphers your messages with emoji for fun and profit.\n- [Emoji Based Diagram](https://blog.mozilla.org/services/2016/08/23/sending-vapid-identified-webpush-notifications-via-mozillas-push-service/#send_data): Emoji Based Diagram of Data Bearing Subscription Updates(WebPush VAPID).\n- [HTTP status codes as emoji](https://twitter.com/nlognhq/status/1314443449244946436).\n- [OSI Model with emojis](https://twitter.com/jbizzle703/status/1320745108594135041).\n\n\n## Contributing\n\n[Ask](https://github.com/slashsbin/styleguide-git-commit-message/issues/new) to Be [Creative](https://www.emojicopy.com/)!\n\nTo add a new Emoji to the list: [Create an Issue](https://github.com/slashsbin/styleguide-git-commit-message/issues/new) \u0026 Send a [PR]().\n\n\n## License\n\nThe Code is licensed under the [MIT License](http://slashsbin.mit-license.org/).\n","funding_links":[],"categories":["Ruby","HTML"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslashsbin%2Fstyleguide-git-commit-message","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fslashsbin%2Fstyleguide-git-commit-message","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslashsbin%2Fstyleguide-git-commit-message/lists"}