LLM-powered commit messages that understand your code!
Automate your commits! Replace git commit -m "..." with gac for contextual, well-formatted commit messages generated by large language models!
Intelligent, contextual messages that explain the why behind your changes:
uvx gac init # Configure your LLM provider
uvx gac # Generate and commit with LLMThat's it! Review the generated message and confirm with y.
uv tool install gac
gac init
gacuv tool upgrade gac- Anthropic • Cerebras • Chutes.ai • DeepSeek • Fireworks
- Gemini • Groq • LM Studio • MiniMax • Mistral • Ollama • OpenAI
- OpenRouter • Streamlake • Synthetic.new • Together AI
- Z.AI • Z.AI Coding • Custom Endpoints (Anthropic/OpenAI)
- Understands intent: Analyzes code structure, logic, and patterns to understand the "why" behind your changes, not just what changed
- Semantic awareness: Recognizes refactoring, bug fixes, features, and breaking changes to generate contextually appropriate messages
- Intelligent filtering: Prioritizes meaningful changes while ignoring generated files, dependencies, and artifacts
- One-liner (-o flag): Single-line commit message following conventional commit format
- Standard (default): Summary with bullet points explaining implementation details
- Verbose (-v flag): Comprehensive explanations including motivation, technical approach, and impact analysis
- 25+ languages: Generate commit messages in English, Chinese, Japanese, Korean, Spanish, French, German, and 20+ more languages
- Flexible translation: Choose to keep conventional commit prefixes in English for tool compatibility, or fully translate them
- Multiple workflows: Set a default language with
gac language, or use-l <language>flag for one-time overrides - Native script support: Full support for non-Latin scripts including CJK, Cyrillic, Arabic, and more
- Interactive feedback: Type
rto reroll,eto edit in-place with vi/emacs keybindings, or directly type your feedback likemake it shorterorfocus on the bug fix - One-command workflows: Complete workflows with flags like
gac -ayp(stage all, auto-confirm, push) - Git integration: Respects pre-commit and lefthook hooks, running them before expensive LLM operations
- Automatic secret detection: Scans for API keys, passwords, and tokens before committing
- Interactive protection: Prompts before committing potentially sensitive data with clear remediation options
- Smart filtering: Ignores example files, template files, and placeholder text to reduce false positives
# Stage your changes
git add .
# Generate and commit with LLM
gac
# Review → y (commit) | n (cancel) | r (reroll) | e (edit) | or type feedback| Command | Description |
|---|---|
gac |
Generate commit message |
gac -y |
Auto-confirm (no review needed) |
gac -a |
Stage all before generating commit message |
gac -o |
One-line message for trivial changes |
gac -v |
Verbose format with Motivation, Technical Approach, and Impact Analysis |
gac -h "hint" |
Add context for LLM (e.g., gac -h "bug fix") |
gac -s |
Include scope (e.g., feat(auth):) |
gac -p |
Commit and push |
# Complete workflow in one command
gac -ayp -h "release preparation"
# Detailed explanation with scope
gac -v -s
# Quick one-liner for small changes
gac -o
# Debug what the LLM sees
gac --show-prompt
# Skip security scan (use carefully)
gac --skip-secret-scanNot happy with the result? You have several options:
# Simple reroll (no feedback)
r
# Edit in-place with rich terminal editing
e
# Uses prompt_toolkit for multi-line editing with vi/emacs keybindings
# Esc+Enter to finish, Ctrl+C to cancel
# Or just type your feedback directly!
make it shorter and focus on the performance improvement
use conventional commit format with scope
explain the security implications
# Press Enter on empty input to see the prompt againThe edit feature (e) provides rich in-place terminal editing, allowing you to:
- Edit naturally: Multi-line editing with familiar vi/emacs key bindings
- Make quick fixes: Correct typos, adjust wording, or refine formatting
- Add details: Include information the LLM might have missed
- Restructure: Reorganize bullet points or change the message structure
Run gac init to configure your provider interactively, or set environment variables:
# Example configuration
GAC_MODEL=anthropic:your-model-name
OPENAI_API_KEY=your_key_here
ANTHROPIC_API_KEY=your_key_hereSee .gac.env.example for all available options.
Want commit messages in another language? Run gac language to select from 25+ languages including Español, Français, 日本語, and more.
Want to customize commit message style? See docs/CUSTOM_SYSTEM_PROMPTS.md for guidance on writing custom system prompts.
- Full documentation: USAGE.md - Complete CLI reference
- Custom prompts: CUSTOM_SYSTEM_PROMPTS.md - Customize commit message style
- Troubleshooting: TROUBLESHOOTING.md - Common issues and solutions
- Contributing: CONTRIBUTING.md - Development setup and guidelines
Made with ❤️ for developers who want better commit messages