f610c0af8b5cb8f714579f30538a5a9a6708bf21
QuiCommit
A powerful AI-powered Git assistant for generating conventional commits, tags, and changelogs. Manage multiple Git profiles for different work contexts seamlessly.
Features
- 🤖 AI-Powered Generation: Generate commit messages, tag annotations, and changelog entries using LLM APIs (OpenAI, Anthropic) or local Ollama models
- 📝 Conventional Commits: Full support for Conventional Commits and @commitlint formats
- 👤 Profile Management: Save and switch between multiple Git profiles (user info, SSH keys, GPG signing)
- 🏷️ Smart Tagging: Semantic version bumping with auto-generated release notes
- 📜 Changelog Generation: Automatic changelog generation in Keep a Changelog or GitHub Releases format
- 🔐 Security: Encrypt sensitive data like SSH passphrases and API keys
- 🎨 Interactive UI: Beautiful CLI with interactive prompts and previews
Installation
From Source
git clone https://github.com/yourusername/quicommit.git
cd quicommit
cargo build --release
The binary will be available at target/release/quicommit.
Prerequisites
- Rust 1.70 or later
- Git 2.0 or later
- For AI features: Ollama (local) or API keys for OpenAI/Anthropic
Quick Start
1. Initialize Configuration
quicommit init
This will guide you through setting up your first profile and LLM configuration.
2. Generate a Commit
# AI-generated commit (default)
quicommit commit
# Manual commit
quicommit commit --manual -t feat -m "add new feature"
# Date-based commit
quicommit commit --date
# Stage all and commit
quicommit commit -a
3. Create a Tag
# Auto-detect version bump from commits
quicommit tag
# Bump specific version
quicommit tag --bump minor
# Custom tag name
quicommit tag -n v1.0.0
4. Generate Changelog
# Generate for unreleased changes
quicommit changelog
# Generate for specific version
quicommit changelog -v 1.0.0
# Initialize new changelog
quicommit changelog --init
Configuration
Profiles
Manage multiple Git identities for different contexts:
# Add a new profile
quicommit profile add
# List profiles
quicommit profile list
# Switch profile
quicommit profile switch
# Apply profile to current repo
quicommit profile apply
# Set profile for current repo
quicommit profile set-repo personal
LLM Providers
Ollama (Local - Recommended)
# Configure Ollama
quicommit config set-llm ollama
# Or with specific settings
quicommit config set-ollama --url http://localhost:11434 --model llama2
OpenAI
quicommit config set-llm openai
quicommit config set-openai-key YOUR_API_KEY
Anthropic Claude
quicommit config set-llm anthropic
quicommit config set-anthropic-key YOUR_API_KEY
Commit Format
# Use conventional commits (default)
quicommit config set-commit-format conventional
# Use commitlint format
quicommit config set-commit-format commitlint
Usage Examples
Interactive Commit Flow
$ quicommit commit
Staged files (3):
• src/main.rs
• src/lib.rs
• Cargo.toml
🤖 AI is analyzing your changes...
────────────────────────────────────────────────────────────
Generated commit message:
────────────────────────────────────────────────────────────
feat: add user authentication module
Implement OAuth2 authentication with support for GitHub
and Google providers.
────────────────────────────────────────────────────────────
What would you like to do?
> ✓ Accept and commit
🔄 Regenerate
✏️ Edit
❌ Cancel
Profile Management
# Create work profile
$ quicommit profile add
Profile name: work
Git user name: John Doe
Git user email: john@company.com
Is this a work profile? yes
Organization: Acme Corp
# Set for current repository
$ quicommit profile set-repo work
✓ Set 'work' for current repository
Smart Tagging
$ quicommit tag
Latest version: v0.1.0
Version selection:
> Auto-detect bump from commits
Bump major version
Bump minor version
Bump patch version
🤖 AI is generating tag message from 15 commits...
Tag preview:
Name: v0.2.0
Message:
## What's Changed
### 🚀 Features
- Add user authentication
- Implement dashboard
### 🐛 Bug Fixes
- Fix login redirect issue
Create this tag? yes
✓ Created tag v0.2.0
Configuration File
Configuration is stored at:
- Linux:
~/.config/quicommit/config.toml - macOS:
~/Library/Application Support/quicommit/config.toml - Windows:
%APPDATA%\quicommit\config.toml
Example configuration:
version = "1"
default_profile = "personal"
[profiles.personal]
name = "personal"
user_name = "John Doe"
user_email = "john@example.com"
[profiles.work]
name = "work"
user_name = "John Doe"
user_email = "john@company.com"
is_work = true
organization = "Acme Corp"
[llm]
provider = "ollama"
max_tokens = 500
temperature = 0.7
[llm.ollama]
url = "http://localhost:11434"
model = "llama2"
[commit]
format = "conventional"
auto_generate = true
max_subject_length = 100
[tag]
version_prefix = "v"
auto_generate = true
include_changelog = true
[changelog]
path = "CHANGELOG.md"
auto_generate = true
group_by_type = true
Environment Variables
| Variable | Description |
|---|---|
QUICOMMIT_CONFIG |
Path to configuration file |
EDITOR |
Default editor for interactive input |
NO_COLOR |
Disable colored output |
Shell Completions
Bash
quicommit completions bash > /etc/bash_completion.d/quicommit
Zsh
quicommit completions zsh > /usr/local/share/zsh/site-functions/_quicommit
Fish
quicommit completions fish > ~/.config/fish/completions/quicommit.fish
Troubleshooting
LLM Connection Issues
# Test LLM connection
quicommit config test-llm
# List available models
quicommit config list-models
Git Operations
# Check current profile
quicommit profile show
# Apply profile to fix git config
quicommit profile apply
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 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT OR Apache-2.0 license.
Acknowledgments
- Conventional Commits specification
- Keep a Changelog format
- Ollama for local LLM support
Languages
Rust
99.5%
Makefile
0.5%