6.3 Commit Practices
Commits should represent logical units of work that can be reviewed and understood independently. Large features should be broken down into smaller, focused commits that each address a specific aspect of the functionality being developed.
1
2
3
4
5
6
7
# Good commit message format
git commit -m "feat: Add email validation to contact form
Implements client-side and server-side validation for email
fields to prevent invalid submissions and improve user
experience. Includes proper error messaging and accessibility
attributes."
We never commit sensitive information like API keys, database credentials, or environment-specific configuration. These details belong in environment files that are excluded from version control and managed separately for each deployment environment.
Commit messages should clearly describe what changes were made and why. The first line provides a concise summary of no more than 50 characters, followed by a blank line and a more detailed explanation when necessary. This format ensures that commit logs remain readable when viewing project history. Commit messages should follow Conventional Commits specification: feat:, fix:, chore:, docs:, style:, refactor:, perf:, test: seen in the table below.
6.3.1 Commit types
| Commit Type | Title | Description | Emoji |
|---|---|---|---|
feat: |
Features | A new feature | ✨ |
fix: |
Bug Fixes | A bug Fix | 🐛 |
docs: |
Documentation | Documentation only changes | 📚 |
style: |
Styles | Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc) | 💎 |
refactor: |
Code Refactoring | A code change that neither fixes a bug nor adds a feature | 📦 |
perf: |
Performance Improvements | A code change that improves performance | 🚀 |
test: |
Tests | Adding missing tests or correcting existing tests | 🚨 |
build: |
Builds | Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm) | 🛠 |
ci: |
Continuous Integrations | Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs) | ⚙️ |
chore: |
Chores | Other changes that don’t modify src or test files | ♻️ |
revert: |
Reverts | Reverts a previous commit | 🗑 |