gitwhisper 0.0.50
gitwhisper: ^0.0.50 copied to clipboard
AI-powered Git commit message generator that whispers the perfect commit message for your changes
gitwhisper #
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.
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
Features #
- ๐ค Leverages various AI models to analyze your code changes and generate meaningful commit messages
- ๐ Follows conventional commit format with emojis:
<emoji> <type>: <description>
- ๐ 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
- ๐ Supports multiple AI models:
- Claude (Anthropic)
- OpenAI (GPT)
- Gemini (Google)
- Grok (xAI)
- Llama (Meta)
- Deepseek (DeepSeek, Inc.)
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
# 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
gitwhisper set-defaults --model openai --model-variant gpt-4o
gw set-defaults --model openai --model-variant gpt-4o
# 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.
Command Structure #
GitWhisper uses a command-based structure:
commit
: Generate and apply a commit message (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 modelsave-key
: Store an API key for future useupdate
: Update GitWhisper to the latest versionset-defaults
: Set default model and variant for future useclear-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
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
- Applies any prefix/ticket number if specified
- Submits the commit with the generated message
Configuration #
Configuration is stored in ~/.git_whisper.yaml
and typically contains your saved API keys:
api_keys:
claude: "your-claude-key"
openai: "your-openai-key"
# ...
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.