git-commit-staged · git:20260410.79f3e85 · 2026-04-10 · sha256 df8d3b152dcb8f88
git-commit-staged git:20260410.79f3e85A
Immutable. This exact content never changes and is served at /api/v1/blob/df8d3b152dcb8f88.
--- name: git-commit-staged description: Generate a git commit message based on the staged changes in the repository. --- # Generate Git Commit from Staged Changes Generates a Conventional Commits-formatted commit message from only the staged changes, leaving unstaged changes untouched. ## Prerequisites - `git` repository with at least one staged change (`git add` already run) - Working directory is the root of the repository ## Steps 1. Review staged changes only: ``` git diff --staged ``` 2. Draft a commit message following the format below. 3. Commit the staged changes: ``` git commit -m "<type>(<scope>): <description>" ``` ## Commit Message Format ``` <type>(<scope>): <short description under 72 chars> <optional body explaining what and why, not how> ``` **Types:** `feat`, `fix`, `docs`, `style`, `refactor`, `test`, `chore` **Rules:** - Use imperative mood: "Add feature" not "Added feature" - Keep subject line under 72 characters - Separate subject from body with a blank line when a body is included - Body explains *what* and *why*, not *how* ## Example Usage **Scenario 1: Partial commit - only test changes staged** Staged: `tests/test_auth.py`. Unstaged: `src/auth.py`. Commit: `test(auth): add unit tests for JWT validation` **Scenario 2: Config change staged** Staged: `pyproject.toml` adding a new dependency. Commit: `chore(deps): add structlog dependency` **Scenario 3: Multi-file feature staged** Staged: `src/payments.py` and `migrations/0042_payments.sql`. ``` feat(payments): add Stripe payment processing Introduces PaymentService class and corresponding DB migration for the payments table. ``` ## Useful Commands Reference | Command | Description | |---|---| | `git diff --staged` | Show only staged changes | | `git status` | Show staged vs unstaged file status | | `git commit -m "<message>"` | Commit staged changes with a message | | `git log --oneline -10` | Show recent commits for style reference |