Gitmoji Commits
Create clean, intentional commits with the right emoji and scope.
Workflow (use in order)
-
Inspect working tree
- Run:
git status --shortandgit diff --stat - Identify file groups by intent (feature, fix, docs, tests, config).
- Run:
-
Plan commit boundaries
- Split unrelated work into separate commits.
- Use
git add -pfor mixed files.
-
Choose emoji (core-first)
- Preferred:
bash scripts/gitmoji_selector.sh --emoji-only "<change summary>" - If unsure/rare case: consult
references/gitmoji-guide.md.
- Preferred:
-
Draft commit message
- Format:
emoji type(scope): subject - Keep subject imperative and concise (<= 50 chars).
- Format:
-
Stage only intended changes
- Run:
git add <file>orgit add -p - Re-check with:
git diff --cached --stat.
- Run:
-
Safety check before commit
- Ensure no secrets, debug logs, or accidental churn.
- Ensure commit content matches the message.
-
Commit and repeat
- Run:
git commit -m "<message>" - Repeat until working tree is clean.
- Run:
Commit Format
✨ feat(auth): Add two-factor login
Optional body:
✨ feat(auth): Add two-factor login
- Add TOTP enrollment and verification
- Update auth service and user model
Closes #123
Type Guide
Use Conventional Commit types:
feat, fix, refactor, docs, test, perf, style, chore, ci, build
Common scopes: auth, api, ui, db, ci, deps
Core Emoji Map (auto-detected)
| Type | Emoji | Keywords | |------|-------|----------| | Feature | ✨ | add, new, implement | | Bug fix | 🐛 | fix, bug, error | | Simple fix | 🩹 | typo, quick, one-liner | | Documentation | 📝 | docs, readme, changelog | | Tests | 🧪 | test, spec, integration | | Refactor | ♻️ | refactor, extract, restructure | | Performance | ⚡ | optimize, perf, cache | | UI/Styles | 💄 | css, style, ui, theme | | Dependencies | 📦 | npm, dependency, package | | Security | 🔐 | security, cve, xss | | Config | ⚙️ / 🔧 | config, setup, settings | | Remove | 🗑️ | remove, delete, deprecate | | Major | 🔨 | rewrite, redesign, architect | | Deploy | 🚀 | deploy, release, ship | | SEO | 🔍 | seo, metadata | | i18n | 🗣️ | translate, locale | | Linter | 🚨 | eslint, prettier | | Automation | 🔄 | github actions, workflow | | Test pass | ✅ | tests passing, green build | | Upgrade deps | ⬆️ | upgrade, bump | | Downgrade deps | ⬇️ | downgrade | | Types/Tag | 🏷️ | type definitions, version tags | | Copy/Text | 💬 | copy, strings, text | | Comments/Notes | 💡 | comment, todo, note | | Mocks | 🎭 | mock, stub |
Special Cases (highest priority)
| Emoji | When | |-------|------| | ⏪ | Revert commits | | 🔀 | Merge commits | | 🚑 | Hotfix | | 🚧 | WIP |
Helper Script
# Emoji only (fast)
bash scripts/gitmoji_selector.sh --emoji-only "fix critical bug"
# JSON suggestion
bash scripts/gitmoji_selector.sh "update api docs"
# Full Conventional Commit
bash scripts/gitmoji_selector.sh --conventional feat auth "Add login"
Scan to join WeChat group