gitc
is a fast, lightweight CLI tool that uses AI to generate clear, consistent, and standards-compliant commit messages β directly from your Git diffs. With built-in support for Conventional Commits, Gitmoji, and fully customizable rules,gitc
helps you and your team write better commits, faster
gitc
is a lightweight CLI tool that leverages AI to craft clear, standards-compliant Git commit messages from your diffs. Supporting Conventional Commits, Gitmoji, and custom rules, it saves time and boosts commit quality for you and your team.
-
π§ AI-Powered Commits
- Generates context-aware commit messages using OpenAI, Grok (xAI), or DeepSeek.
- Supports multiple languages (e.g., English, Persian, Russian) for global teams.
- Extensible for future AI providers like Gemini.
-
π Standards & Customization
- Follows Conventional Commits (
feat
,fix
,docs
, etc.) for semantic versioning. - Adds Gitmoji emojis for visual flair (e.g., β¨, π).
- Customizable prefixes (e.g., JIRA IDs) via JSON.
- Follows Conventional Commits (
-
π§ Git Integration
- Processes staged Git diffs, ignoring irrelevant files (
node_modules/*
,*.lock
). - Configurable file exclusions for focused commits.
- Processes staged Git diffs, ignoring irrelevant files (
-
βοΈ Flexible Configuration
- Supports CLI flags, environment variables, and
~/.gitc/config.json
. - Includes proxy support, adjustable timeouts, and redirect limits.
- Supports CLI flags, environment variables, and
-
β‘οΈ Performance & Reliability
- Go: Version 1.18 or higher (required for building from source).
- Git: Required for retrieving staged changes.
- OpenAI API Key: Required for AI-powered commit message generation. Set it via the
AI_API_KEY
environment variable or in the config file.
go install github.com/rezatg/gitc@latest
- Download binary from releases
chmod +x gitc
- Move to
/usr/local/bin
After installation, verify the tool is installed correctly and check its version:
gitc --version
# 1. Stage your changes
git add . # or gitc -a
# 2. Generate perfect commit message
gitc
# Pro Tip: Add emojis and specify language
gitc --emoji --lang fa
# Custom commit type
gitc --commit-type fix
export OPENAI_API_KEY="sk-your-key-here"
export GITC_LANGUAGE="fa"
export GITC_MODEL="gpt-4"
Config File (~/.gitc/config.json
) :
{
"provider": "openai",
"max_length": 200,
"proxy": "",
"language": "en",
"timeout": 10,
"commit_type": "",
"custom-convention": "",
"use_gitmoji": false,
"max_redirects": 5,
"open_ai": {
"api_key": "sk-your-key-here",
"model": "gpt-4o-mini",
"url": "https://api.openai.com/v1/chat/completions"
}
}
gitc config --api-key "sk-your-key-here" --model "gpt-4o-mini" --lang en
The following CLI flags are available for the ai-commit
command and its config
subcommand. All flags can also be set via environment variables or the ~/.gitc/config.json
file.
Flag | Alias | Description | Default | Environment Variable | Example |
---|---|---|---|---|---|
--all |
-a |
Stage all changes before generating commit message (equivalent to git add . ) |
false |
GITC_STAGE_ALL |
-all or -a |
--provider |
- | AI provider to use (e.g., openai , anthropic ) |
openai |
AI_PROVIDER |
--provider openai |
--url |
-u |
Custom API URL for the AI provider | Provider-specific | GITC_API_URL |
--url https://api.x.ai/v1/chat/completions |
--model |
- | OpenAI model for commit message generation | gpt-4o-mini |
- | --model gpt-4o |
--lang |
- | Language for commit messages (e.g., en , fa , ru ) |
en |
GITC_LANGUAGE |
--lang fa |
--timeout |
- | Request timeout in seconds | 10 |
- | --timeout 15 |
--maxLength |
- | Maximum length of the commit message | 200 |
- | --maxLength 150 |
--api-key |
-k |
API key for the AI provider | - | AI_API_KEY |
--api-key sk-xxx |
--proxy |
-p |
Proxy URL for API requests | - | GITC_PROXY |
--proxy http://proxy.example.com:8080 |
--commit-type |
-t |
Commit type for Conventional Commits (e.g., feat , fix ) |
- | GITC_COMMIT_TYPE |
--commit-type feat |
--custom-convention |
-C |
Custom commit message convention (JSON format) | - | GITC_CUSTOM_CONVENTION |
--custom-convention '{"prefix": "JIRA-123"}' |
--emoji |
-g |
Add Gitmoji to the commit message | false |
GITC_GITMOJI |
--emoji |
--no-emoji |
- | Disables Gitmoji in commit messages (overrides --emoji and config file) |
false |
- | --no-emoji |
--max-redirects |
-r |
Maximum number of HTTP redirects | 5 |
GITC_MAX_REDIRECTS |
--max-redirects 10 |
--config |
-c |
Path to the configuration file | ~/.gitc/config.json |
GITC_CONFIG_PATH |
--config ./my-config.json |
Note
- Flags for the
config
subcommand are similar but exclude defaults, as they override the config file. - Flags > Environment Variables > Config File β This is the order of precedence when multiple settings are provided.
- The
--custom-convention
flag expects a JSON string with aprefix
field (e.g.,{"prefix": "JIRA-123"}
). - The
--version
flag displays the current tool version (e.g.,0.3.0
) and can be used to verify installation. - The
--all
flag (alias-a
) stages all changes in the working directory before generating the commit message, streamlining the workflow. For example,gitc -a --emoji
stages all changes and generates a commit message with Gitmoji. - Environment variables take precedence over config file settings but are overridden by CLI flags.
- You can reset all configuration values to their defaults by using gitc config
gitc reset-config
.
gitc
is designed to be AI-provider agnostic. While it currently supports OpenAI out of the box, support for additional providers is on the roadmap to ensure flexibility and future-proofing.
Provider | Supported Models | Required Configuration | Status |
---|---|---|---|
OpenAI | gpt-4o , gpt-4o-mini , gpt-3.5-turbo |
api_key , model , url (optional) |
β Supported (default) |
Grok (xAI) | grok-3 (experimental) | api_key , model , url |
π§ͺ Experimental Support |
DeepSeek | deepseek-rag (experimental) | api_key , model , url |
π§ͺ Experimental Support |
Gemini (Google) | Coming Soon | - | π Planned |
Others | - | - | π§ͺ Under consideration |
βΉοΈ We're actively working on supporting multiple AI backends to give you more control, flexibility, and performance. Have a provider you'd like to see? Open a discussion!
We welcome contributions! Please check out the contributing guide before making a PR.