Back to Roo Code

Commit

.roo/commands/commit.md

3.53.02.4 KB
Original Source
  1. Analyze the current changes to understand what needs to be committed:

    bash
    # Check for staged and unstaged changes
    git status --short
    
    # View the diff of all changes (staged and unstaged)
    git diff HEAD
    
  2. Based on the diff output, formulate a commit message following conventional commit format:

    • feat: New feature or functionality
    • fix: Bug fix
    • refactor: Code restructuring without behavior change
    • docs: Documentation changes
    • test: Adding or updating tests
    • chore: Maintenance tasks, dependencies, configs
    • style: Formatting, whitespace, no logic changes

    Format: type(scope): brief description

    Examples:

    • feat(api): add user authentication endpoint
    • fix(ui): resolve button alignment on mobile
    • refactor(core): simplify error handling logic
    • docs(readme): update installation instructions
  3. Stage all unstaged changes:

    bash
    git add -A
    
  4. Commit with the generated message:

    bash
    git commit -m "type(scope): brief description"
    

    If pre-commit hooks fail:

    • Review the error output (linter errors, type checking errors, etc.)
    • Fix the identified issues in the affected files
    • Re-stage the fixes: git add -A
    • Retry the commit: git commit -m "type(scope): brief description"
  5. Push to the remote repository:

    bash
    git push
    

    If pre-push hooks fail:

    • Review the error output (test failures, linter errors, etc.)
    • Fix the identified issues in the affected files
    • Stage and commit the fixes using steps 3-4
    • Retry the push: git push

Tips for good commit messages:

  • Keep the first line under 72 characters
  • Use imperative mood ("add", "fix", "update", not "added", "fixes", "updated")
  • Be specific but concise
  • If multiple unrelated changes exist, consider splitting into separate commits

Common hook failures and fixes:

  • Linter errors: Run the project's linter (e.g., npm run lint or pnpm lint) to see all issues, then fix them
  • Type checking errors: Run type checker (e.g., npx tsc --noEmit) to identify type issues
  • Test failures: Run tests (e.g., npm test or pnpm test) to identify failing tests and fix them
  • Format issues: Run formatter (e.g., npm run format or pnpm format) to auto-fix formatting