LLM-powered Git commit message generator with multi-provider support
Project description
🚀 Git Auto Commit (gac)
English | 简体中文 | 繁體中文 | 日本語 | 한국어 | हिन्दी | Tiếng Việt | Français | Русский | Español | Português | Norsk | Svenska | Deutsch | Nederlands | Italiano
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!
What You Get
Intelligent, contextual messages that explain the why behind your changes:
Quick Start
Use gac without installing
uvx gac init # Configure your provider, model, and language
uvx gac # Generate and commit with LLM
That's it! Review the generated message and confirm with y.
Install and use gac
uv tool install gac
gac init
gac
Upgrade installed gac
uv tool upgrade gac
Key Features
🌐 28+ Supported Providers
- Anthropic • Azure OpenAI • Cerebras • ChatGPT (OAuth) • Chutes.ai
- Claude Code (OAuth) • Crof.ai • DeepSeek • Fireworks • Gemini • GitHub Copilot
- Groq • Kimi for Coding • LM Studio • MiniMax.io • Mistral AI • Moonshot AI
- Ollama • OpenAI • OpenCode Go • OpenRouter • Qwen Cloud (CN & INTL)
- Replicate • Streamlake/Vanchin • Synthetic.new • Together AI • Wafer.ai
- Z.AI (API & Coding Plans) • Custom Endpoints (Anthropic/OpenAI)
🧠 Smart LLM Analysis
- 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
- Intelligent commit grouping - Automatically group related changes into multiple logical commits with
--group
📝 Multiple Message Formats
- 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
- 50/72 rule (--50-72 flag): Enforce the classic commit message format for optimal readability in git log and GitHub UI
- DCO/Signoff (--signoff flag): Add Signed-off-by line for Developer Certificate of Origin compliance (required by Cherry Studio, Linux kernel, and other projects)
🌍 Multilingual Support
- 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, Thai, and more
💻 Developer Experience
- Interactive feedback: Type
rto reroll,eto edit (in-place TUI by default, or your$GAC_EDITORif set), or directly type your feedback likemake it shorterorfocus on the bug fix - Interactive questioning: Use
--interactive(-i) to answer targeted questions about your changes for more contextual commit messages - 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
- MCP server: Run
gac serveto expose commit tools to AI agents via the Model Context Protocol
📊 Usage Statistics
- Track your gacs: See how many commits you've made with gac, your current streak, peak daily/weekly activity, and top projects
- Token tracking: Total prompt + completion tokens by day, week, project, and model — with high-score trophies for token usage too
- Top models: See which models you use most and how many tokens each one consumes
- Per-project stats: View stats for all your repos with
gac stats projects - High score celebrations: 🏆 trophies when you set new daily, weekly, token, or streak records; 🥈 for tying them
- Opt-in during setup:
gac initasks whether to enable stats and explains exactly what's stored - Opt-out anytime: Set
GAC_DISABLE_STATS=true(or1/yes/on) to disable. Setting it tofalse/0/no(or unsetting) keeps stats enabled - Privacy-first: Stored locally in
~/.gac_stats.json. Only counts, dates, project names, and model names — no commit messages, code, or personal data. No telemetry
🛡️ Built-in Security
- 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
Usage Examples
Basic Workflow
# Stage your changes
git add .
# Generate and commit with LLM
gac
# Review → y (commit) | n (cancel) | r (reroll) | e (edit) | or type feedback
Common Commands
| Command | Description |
|---|---|
gac |
Generate commit message |
gac -y |
Auto-confirm (no review needed) |
gac -a |
Stage all before generating commit message |
gac -S |
Interactively select files to stage |
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 -i |
Ask questions about changes for better context |
gac -g |
Group changes into multiple logical commits |
gac -p |
Commit and push |
gac stats |
View your gac usage statistics |
Power User Examples
# View your commit statistics
gac stats
# Stats for all projects
gac stats projects
# 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
# Generate commit message in a specific language
gac -l ja
# Group changes into logically related commits
gac -ag
# Interactive mode with verbose output for detailed explanations
gac -iv
# Debug what the LLM sees
gac --show-prompt
# Skip security scan (use carefully)
gac --skip-secret-scan
# Add signoff for DCO compliance (Cherry Studio, Linux kernel, etc.)
gac --signoff
Interactive Feedback System
Not happy with the result? You have several options:
# Simple reroll (no feedback)
r
# Edit the commit message
e
# By default: in-place TUI with vi/emacs keybindings
# Press Esc+Enter or Ctrl+S to submit, Ctrl+C to cancel
# Set GAC_EDITOR to open your preferred editor instead:
# GAC_EDITOR=code gac → opens VS Code (--wait auto-applied)
# GAC_EDITOR=vim gac → opens vim
# GAC_EDITOR=nano gac → opens nano
# 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 again
The edit feature (e) lets you refine the commit message:
- Default (in-place TUI): Multi-line editing with vi/emacs key bindings — correct typos, adjust wording, restructure
- With
GAC_EDITOR: Opens your preferred editor (code,vim,nano, etc.) — full editor power including find/replace, macros, etc.
GUI editors like VS Code are automatically handled: gac inserts --wait so the process blocks until you close the editor tab. No extra configuration needed.
Configuration
Run gac init to configure your provider interactively, or set environment variables:
Need to change providers or models later without touching language settings? Use gac model for a streamlined flow that skips the language prompts.
# Example configuration
GAC_MODEL=anthropic:your-model-name
OPENAI_API_KEY=your_key_here
ANTHROPIC_API_KEY=your_key_here
See .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.
Getting Help
- Full documentation: docs/USAGE.md - Complete CLI reference
- MCP server: docs/MCP.md - Use GAC as an MCP server for AI agents
- Claude Code OAuth: docs/CLAUDE_CODE.md - Claude Code setup and authentication
- ChatGPT OAuth: docs/CHATGPT_OAUTH.md - ChatGPT OAuth setup and authentication
- Custom prompts: docs/CUSTOM_SYSTEM_PROMPTS.md - Customize commit message style
- Usage statistics: See
gac stats --helpor the full docs - Troubleshooting: docs/TROUBLESHOOTING.md - Common issues and solutions
- Contributing: docs/CONTRIBUTING.md - Development setup and guidelines
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gac-3.31.1.tar.gz.
File metadata
- Download URL: gac-3.31.1.tar.gz
- Upload date:
- Size: 162.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a0cdf6ec9ec34bcef0bfab608f92129cb99d54d23ef4724429dbf2547b8df9a
|
|
| MD5 |
6dafe087e2314b54c40b133c33054f1c
|
|
| BLAKE2b-256 |
e1ec74fd2b4306b4d11d42ee74a1a2bf11d685e1df39266454d01335f40ab672
|
File details
Details for the file gac-3.31.1-py3-none-any.whl.
File metadata
- Download URL: gac-3.31.1-py3-none-any.whl
- Upload date:
- Size: 211.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
31558265e515768d120cab395ad7347bee4903acba3cfb96b661d7099c83a82e
|
|
| MD5 |
476cdf8b0ca7561bfb43664b0fe9b52b
|
|
| BLAKE2b-256 |
a5fa61ab9d63a9e6fb625b83d417ef75ede7b88833c1c2c274be47ebf464ebef
|