Skip to main content

LLM-powered Git commit message generator with multi-provider support

Project description

🚀 Git Auto Commit (gac)

PyPI version Python Build Status codecov Ruff mypy Contributions welcome License: MIT

LLM-powered commit messages that understand your code.

Tired of writing commit messages? Replace git commit -m "..." with gac for contextual, well-formatted commit messages generated by large language models.


What You Get

Instead of generic messages like "update stuff", "fix bug", or "add feature", you get intelligent, contextual messages that explain the why behind your changes:

GAC generating a contextual commit message


Quick Start

Use without installing

uvx gac init  # Configure your LLM provider
uvx gac  # Generate and commit with LLM

That's it! Review the generated message and confirm with y.

Install gac globally

uv tool install gac
gac init
gac

Key Features

🌐 Supported Providers

  • AnthropicCerebrasChutes.aiFireworksGemini
  • GroqLM StudioOllamaOpenAIOpenRouter
  • StreamlakeSynthetic.newZ.AIZ.AI Coding

🧠 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

📝 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

💻 Developer Experience

  • Interactive feedback: Regenerate messages with specific requests like r "make it shorter" or r "focus 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

🛡️ 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)

Common Commands

Command Description
gac Generate commit message
gac -y Auto-confirm (no review needed)
gac -a Stage all + commit
gac -o One-line message only
gac -v Detailed verbose format
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

Power User Examples

# 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-scan

Interactive Reroll System

Not happy with the result? Use the reroll feature for intelligent regeneration:

# Simple regeneration (uses previous context)
r

# With specific feedback
r make it shorter and focus on the performance improvement
r use conventional commit format with scope
r explain the security implications

Configuration

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_here

See .gac.env.example for all available options.


Getting Help


Made with ❤️ for developers who want better commit messages

⭐ Star us on GitHub🐛 Report issues📖 Full docs

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

gac-1.10.0.tar.gz (42.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gac-1.10.0-py3-none-any.whl (56.4 kB view details)

Uploaded Python 3

File details

Details for the file gac-1.10.0.tar.gz.

File metadata

  • Download URL: gac-1.10.0.tar.gz
  • Upload date:
  • Size: 42.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.13

File hashes

Hashes for gac-1.10.0.tar.gz
Algorithm Hash digest
SHA256 866fc92225ad2d5eef5884ec3fca548d1b1c15e5b421ca66b7b5dd0b6018d083
MD5 c12f9b178a3b3d64c331a2b0a9f3feae
BLAKE2b-256 e93b118b6e906c04c485d9e247f68f443f8092fcd8941d6b01b7c3f17c78162d

See more details on using hashes here.

File details

Details for the file gac-1.10.0-py3-none-any.whl.

File metadata

  • Download URL: gac-1.10.0-py3-none-any.whl
  • Upload date:
  • Size: 56.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.13

File hashes

Hashes for gac-1.10.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7bac6d439072baf9b477b2f2c2783578f462cc1ddfa200835ab63406a40366dd
MD5 4b88b7a121743ab016a39f30daa4b8cf
BLAKE2b-256 bdab72469a5483b0133c279f1a038fcb3e4fad65354e679aa55e17d42d9bee47

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page