Git Committing
Commit Message Format
<type>(<scope>): <subject>
[optional body]
[optional footer]
Types
| Type | Description |
|---|---|
feat |
New feature |
fix |
Bug fix |
docs |
Documentation only |
style |
Formatting, no code change |
refactor |
Code change without fix/feature |
perf |
Performance improvement |
test |
Adding or fixing tests |
chore |
Build, CI, tooling changes |
Rules
- Subject line: Under 50 characters, imperative mood ("add" not "added")
- Body: Wrap at 72 characters, explain "why" not "what"
- Scope: Optional, indicates affected area (e.g.,
parser,api,ui) - Breaking changes: Add
!after type orBREAKING CHANGE:in footer
Workflow
Run
git statusto see changesRun
git diffto review modificationsCheck recent commits with
git log --oneline -5for style consistencyStage specific files (avoid
git add -A)Write commit message using HEREDOC:
git commit -m "$(cat <<'EOF' type(scope): subject Body explaining why this change was made. EOF )"Verify with
git status
Safety
- Never commit secrets, credentials, or .env files
- Never use
--no-verifyunless explicitly requested - Never amend commits that have been pushed
- Create NEW commits after hook failures, don't amend