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 changes -
Run
git diffto review modifications -
Check recent commits with
git log --oneline -5for style consistency -
Stage 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
Scan to join WeChat group