
Generated by the Very Good CLI ๐ค
Git Whisper is an AI-powered Git commit message generator that whispers the perfect commit message based on your staged changes.
Be nice and buy me a coffee alright or matcha ๐คฃ
Editor Integrations ๐
GitWhisper is also available as plugins for popular editors:
Visual Studio Code
Install the GitWhisper extension directly from the marketplace:
- Extension: GitWhisper for VS Code
- Developer: Panashe Mushinyi
- Features: Generate commit messages directly within VS Code's Git interface
JetBrains IDEs
Available for all JetBrains IDEs (IntelliJ IDEA, WebStorm, PhpStorm, etc.):
- Plugin: GitWhisper for JetBrains
- Developer: Panashe Mushinyi
- Features: Seamless integration with JetBrains VCS tools
Getting Started ๐
If you have Dart
installed, activate globally via:
dart pub global activate gitwhisper
Or locally via:
dart pub global activate --source=path <path to this package>
Or on Mac using Homebrew:
brew tap iamngoni/homebrew-gitwhisper
brew install gitwhisper
Or on Debian using APT:
echo "deb [trusted=yes] https://iamngoni.github.io/gitwhisper-apt stable main" | sudo tee /etc/apt/sources.list.d/gitwhisper.list
sudo apt update
sudo apt install gitwhisper
Or directly with curl:
curl -sSL https://raw.githubusercontent.com/iamngoni/gitwhisper/master/install.sh | bash
Or on the beloved Windows using Powershell (as Administrator):
irm https://raw.githubusercontent.com/iamngoni/gitwhisper/master/install.ps1 | iex
Or download the executable binary for your operating system directly here.
Features
- ๐ค Leverages various AI models to analyze your code changes and generate meaningful commit messages
- ๐ Follows conventional commit format with emojis:
<emoji> <type>: <description>
- โจ Interactive commit confirmation - Review, edit, retry with different models, or discard generated messages
- ๐ Pre-fills the Git commit editor for easy review and modification
- ๐๏ธ Supports automatic pushing of commits to the remote repository
- ๐ Code analysis to understand staged changes and get suggestions for improvements
- ๐ซ Supports ticket number prefixing for commit messages
- ๐งฉ Choose specific model variants (gpt-4o, claude-3-opus, etc.)
- ๐ Securely saves API keys for future use
- ๐ Multi-language support for commit messages and analysis
- ๐ Supports multiple AI models:
- Claude (Anthropic)
- OpenAI (GPT)
- Gemini (Google)
- Grok (xAI)
- Llama (Meta)
- Deepseek (DeepSeek, Inc.)
- GitHub Models (Free, rate-limited)
- All Ollama models
Usage
# Generate a commit message (main command)
gitwhisper commit --model openai
gitwhisper # shorthand for 'gitwhisper commit' - runs commit command by default
gw # even shorter command - also runs 'gitwhisper commit' by default
# Choose a specific model variant
gitwhisper commit --model openai --model-variant gpt-4o
gw commit --model openai --model-variant gpt-4o
# Add a ticket number prefix to your commit message
gitwhisper commit --prefix "JIRA-123"
gw commit --prefix "JIRA-123"
# Automatically push the commit to the remote repository
gitwhisper commit --auto-push
gw commit --auto-push
gw commit -a # shorthand for --auto-push
# Analyze your changes (staged/unstaged) with AI
gitwhisper analyze
gw analyze
# List available models
gitwhisper list-models
gw list-models
# List available variants for a specific model
gitwhisper list-variants --model claude
gw list-variants --model claude
# Change the language for commit messages and analysis
gitwhisper change-language
gw change-language
# Save an API key for future use
gitwhisper save-key --model claude --key "your-claude-key"
gw save-key --model claude --key "your-claude-key"
# Set defaults (model is required, model-variant is optional)
gitwhisper set-defaults --model openai --model-variant gpt-4o
gw set-defaults --model openai --model-variant gpt-4o
# Set just the default model (without variant)
gitwhisper set-defaults --model claude
gw set-defaults --model claude
# Set defaults for Ollama with custom base URL
gitwhisper set-defaults --model ollama --model-variant llama3 --base-url http://localhost:11434
gw set-defaults --model ollama --model-variant llama3 --base-url http://localhost:11434
# Show current defaults
gitwhisper show-defaults
gw show-defaults
# Clear defaults
gitwhisper clear-defaults
gw clear-defaults
# Always stage changes first
gitwhisper always-add true
gw always-add true
# Get help
gitwhisper --help
gw --help
Shorter Command
Instead of using the full gitwhisper
command you can also use the shortened one gw
. Both gitwhisper
and gw
without any subcommands will automatically run the commit
command by default.
Interactive Commit Confirmation
GitWhisper now features an interactive commit confirmation workflow that gives you full control over your commit messages:
What You Can Do:
- Apply: Use the generated commit message as-is
- Edit: Modify the commit message before applying
- Retry: Generate a new message with the same model
- Try Different Model: Generate with a different AI model
- Discard: Cancel and exit without committing
Example Workflow:
$ gitwhisper commit
๐ฎ Analyzing your changes...
โจ Generated commit message: feat: โจ Add user authentication system
Options:
[A] Apply commit message
[E] Edit commit message
[R] Retry with same model
[M] Try different model
[D] Discard and exit
What would you like to do? (A/e/r/m/d):
Command Structure
GitWhisper uses a command-based structure:
commit
: Generate and apply a commit message with interactive confirmation (main command)analyze
: Examine changes (staged/unstaged) and provide detailed code analysis with suggestions for improvementslist-models
: Show all supported AI modelslist-variants
: Show available variants for each AI modelchange-language
: Set the language for AI-generated commit messages and analysissave-key
: Store an API key for future useupdate
: Update GitWhisper to the latest versionset-defaults
: Set default model and variant for future use (supports --base-url for Ollama)show-defaults
: Display current default settingsclear-defaults
: Clear any set default preferences
API Keys
You can provide API keys in several ways:
- Command line argument:
--key "your-api-key"
- Environment variables:
ANTHROPIC_API_KEY
(for Claude)OPENAI_API_KEY
(for OpenAI)GEMINI_API_KEY
(for Gemini)GROK_API_KEY
(for Grok)LLAMA_API_KEY
(for Llama)
- Saved configuration: Use the
save-key
command to store your API key permanently
Model Variants
GitWhisper supports a comprehensive range of model variants:
OpenAI
gpt-4
(default)gpt-4-turbo-2024-04-09
gpt-4o
gpt-4o-mini
gpt-4.5-preview
gpt-3.5-turbo-0125
gpt-3.5-turbo-instruct
o1-preview
o1-mini
o3-mini
Claude (Anthropic)
claude-3-opus-20240307
(default)claude-3-sonnet-20240307
claude-3-haiku-20240307
claude-3-5-sonnet-20240620
claude-3-5-sonnet-20241022
claude-3-7-sonnet-20250219
Gemini (Google)
gemini-2.5-pro-preview-05-06
(advanced reasoning, 1M token context)gemini-2.5-flash-preview-04-17
(adaptive thinking, cost efficient)gemini-2.0-flash
(default, fast performance)gemini-2.0-flash-lite
(lowest latency)gemini-1.5-pro-002
(supports up to 2M tokens)gemini-1.5-flash-002
(supports up to 1M tokens)gemini-1.5-flash-8b
(most cost effective)
Grok (xAI)
grok-1
(default)grok-2
grok-3
grok-2-mini
Llama (Meta)
llama-3-70b-instruct
(default)llama-3-8b-instruct
llama-3.1-8b-instruct
llama-3.1-70b-instruct
llama-3.1-405b-instruct
llama-3.2-1b-instruct
llama-3.2-3b-instruct
llama-3.3-70b-instruct
Deekseek (DeepSeek, Inc.)
deekseek-chat
(default)deepseek-reasoner
GitHub (Free to use models) - rate limited
gpt-4o
(default)Llama-3.3-70B-Instruct
DeepSeek-R1
etc - Check for more here
https://github.com/marketplace?type=models
To run GitHub models you may need the following:
To authenticate with the model you will need to generate a personal access token (PAT) in your GitHub settings. Create your PAT token by following instructions here: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens
Ollama (self-hosted)
- Check Ollama models here: https://ollama.com/search
How It Works
Git Whisper:
- Checks if you have staged changes in your repository
- Retrieves the diff of your staged changes
- Sends the diff to the selected AI model
- Generates a commit message following the conventional commit format with emojis
- Shows you an interactive confirmation - review, edit, retry, or discard the message
- Applies any prefix/ticket number if specified
- Submits the commit with the confirmed message
Language Support
GitWhisper supports generating commit messages and analysis in multiple languages:
- English (default)
- Spanish
- French
- German
- Chinese (Simplified & Traditional)
- Japanese
- Korean
- Arabic
- Italian
- Portuguese
- Russian
- Dutch
- Swedish
- Norwegian
- Danish
- Finnish
- Greek
- Turkish
- Hindi
- Shona
- Zulu
Language Behavior
When using non-English languages:
- Commit messages: The commit type (e.g.,
feat:
,fix:
) and emoji remain in English for tool compatibility, while the description is generated in your selected language - Analysis: The entire analysis response is provided in your selected language
Example commit message in Spanish:
feat: โจ Agregar funcionalidad de modo oscuro
Use the change-language
command to set your preferred language:
gitwhisper change-language
gw change-language
Configuration
Configuration is stored in ~/.git_whisper.yaml
and typically contains your saved API keys and language preference:
api_keys:
claude: "your-claude-key"
openai: "your-openai-key"
# ...
whisper_language: english
Requirements
- Dart SDK (^3.5.0)
- Git installed and available in your PATH
Conventional Commit Format
Git Whisper generates commit messages following the conventional commit format with emojis: fix: ๐ Fix login validation
With Prefix
If a prefix (e.g., a ticket number or task ID) is provided, Git Whisper intelligently formats it based on the number of commit messages:
- For a single commit message, the prefix appears after the emoji:
fix: ๐ PREFIX-123 -> Fix login validation
- For multiple unrelated commit messages, the prefix appears in bold at the top, and each message starts with an arrow after the emoji:
PREFIX-123
feat: โจ Add dark mode toggle
fix: ๐ Resolve token refresh bug
This ensures your commits are always clean, readable, and traceable.
Common Commit Types and Emojis
Type | Emoji | Description |
---|---|---|
feat |
โจ | New feature |
fix |
๐ | Bug fix |
docs |
๐ | Documentation changes |
style |
๐ | Code style changes (formatting, whitespace, etc.) |
refactor |
โป๏ธ | Code refactoring (no new features or fixes) |
test |
๐งช | Adding or updating tests |
chore |
๐ง | Build process or auxiliary tool changes |
perf |
โก | Performance improvements |
ci |
๐ท | Continuous Integration/Deployment changes |
build |
๐ฆ | Build system or dependency changes |
revert |
โช | Revert a previous commit |
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Libraries
- gitwhisper
- gitwhisper, A Very Good Project created by Very Good CLI.