28
Git Commit Conventions & Emoji
Git Commit Conventions & Emoji
Why Have Commit Conventions?
Good commit messages let you:
- Quickly understand the purpose of each change
- Auto-generate changelogs
- Make code review and git blame easier
- Keep team collaboration efficient
Commit Message Format
type(scope): description
[optional body]
[optional footer]
Commit Types with Emoji
| Emoji | Type | Description |
|---|---|---|
| ✨ | feat | New features |
| 🐛 | fix | Bug fixes |
| 📝 | docs | Documentation changes |
| ♻️ | refactor | Code restructuring without changing functionality |
| 🎨 | style | Code formatting, missing semicolons, etc. |
| ⚡️ | perf | Performance improvements |
| ✅ | test | Adding or correcting tests |
| 🧑💻 | chore | Tooling, configuration, maintenance |
| 🚧 | wip | Work in progress |
| 🔥 | remove | Removing code or files |
| 🚑 | hotfix | Critical fixes |
| 🔒 | security | Security improvements |
Commit Process
- Check for staged changes (
git status) - If no staged changes, review and stage appropriate files
- Run pre-commit checks (unless --no-verify)
- Analyze changes to determine commit type
- Generate descriptive commit message
- Include scope if applicable:
type(scope): description - Add body for complex changes explaining why
- Execute commit
Best Practices
- Keep commits atomic and focused
- Write in imperative mood ("Add feature" not "Added feature")
- Explain why, not just what
- Reference issues/PRs when relevant
- Split unrelated changes into separate commits
Examples
Feature Addition
git commit -m "✨ feat(auth): add OAuth2 login support
- Implemented Google OAuth2 provider
- Added token refresh mechanism
- Updated user session handling
Closes #123"
Bug Fix
git commit -m "🐛 fix(api): handle null response in user endpoint
The API was crashing when user data was incomplete.
Added null checks and default values.
Fixes #456"
Documentation
git commit -m "📝 docs: update API documentation for v2 endpoints"
Refactoring
git commit -m "♻️ refactor(utils): extract validation logic to separate module"
Fast Commit Workflow
For quick commits when the change is clear-cut:
- Stage all changes:
git add . - Generate 3 commit message suggestions
- Auto-select the first one
This works well when you're confident the change is straightforward.
Pre-commit Checks
Run these before committing:
- Linting (ESLint, Prettier)
- Type checking (TypeScript)
- Unit tests
You can use husky to set up pre-commit hooks that run these checks automatically.
Next Steps
Check out Five Whys Analysis for root cause debugging.