Git Commit
Goal
Make a logical, reviewable concise commit using the commit style of the repository.
Guardrails
- If potential secrets are found: STOP and ask what to do.
- No
--no-verify, no--amend/rebase/force-push, no pushing unless asked. - If changes look like multiple commits: STOP and propose a split plan (don’t commit yet).
Fast workflow
- Gather information
echo "## DATE" \ && date \ && echo "## BRANCH" \ && git branch --show-current \ && echo "## STATUS" \ && git status --porcelain=v1 \ && echo "## DIFF (unstaged)" \ && git --no-pager diff \ && echo "## DIFF (staged)" \ && git --no-pager diff --staged \ && echo "## LOG (last 20)" \ && git --no-pager log --oneline -20 --graphNOTE: Run as one command. - Stage changes intentionally
git add path/to/file1 path/to/file2 # or: git add -A # when all changes belong to the commit to createIf the staged diff contains unrelated changes, STOP and ask what to do. - Write a concise commit message Infer commit style from recent subjects: Subject rules: Body rules:
- If they look like type(scope): msg → use Conventional Commits. - Otherwise, match the common pattern (caps, prefixes, ticket IDs, etc.). - Imperative mood, no trailing period - Prefer ≤ 72 chars (or match repo norm) - Include scope only if the repo typically does - Add a body only if it answers “why” or prevents confusion: - Why this change is needed - Key tradeoffs or constraints - Notable side effects/follow-ups
- Commit and verify Use multiple
-mflags for multi-line messages (no \n).git commit -m "type(scope): concise summary" # or with body: git commit -m "type(scope): concise summary" -m "Why this change was needed (brief)."