Files
QuiCommit/README.md

7.1 KiB

QuiCommit

A powerful AI-powered Git assistant for generating conventional commits, tags, and changelogs. Manage multiple Git profiles for different work contexts seamlessly.

Rust License

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

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

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'feat: add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT OR Apache-2.0 license.

Acknowledgments