Skip to main content

AI-powered Git commit message generator from your terminal

Project description

gitta

AI-powered Git commit messages and PR descriptions from your terminal.

Gitta Demo

Installation

pip install gitta

Quick Start

gitta init          # Set up your AI provider
gitta add .         # Stage files + generate commit message
gitta ship          # Stage, commit, and push in one step
gitta pr --create   # Generate and create a PR on GitHub

Usage

Setup

Run the interactive setup wizard to configure your AI provider:

gitta init

You'll be prompted for your provider name, API base URL, model, commit style, and API key. Your API key is stored securely in the system keyring.

Recommended Configuration

Committing

Generate an AI-powered commit message from your staged changes:

gitta add .              # Stage files + generate message
gitta commit             # Generate message for already-staged files
gitta commit --dry-run   # Preview without committing

You'll see the generated message and can confirm (y), edit (e), or cancel (n).

Split Commits

When changes span multiple modules, use --split to create scoped commits:

gitta commit --split
gitta add . --split
gitta ship --split

Gitta groups changes by module (e.g. cli, ai, core) and generates a message for each. You can then commit all separately, merge into one, or cancel.

To enable by default:

gitta config set multi_file true

Ship

Stage everything, generate a commit message, and push — all in one step:

gitta ship

Branch Names

Generate a branch name from a natural language description:

gitta branch "fix login timeout"           # → fix/login-timeout
gitta branch "add user avatar upload" -c   # Create and checkout the branch

Pull Requests

Generate a PR title and description from all commits on your branch:

gitta pr                    # Preview the generated title + body
gitta pr --create           # Push branch and create PR on GitHub
gitta pr --create --draft   # Create as draft
gitta pr --base develop     # Compare against a specific base branch

When creating, you can confirm (y), edit (e), or cancel (n) before the PR is submitted. Requires the GitHub CLI (gh).

Explain

Explain what a commit or file change does in plain English:

gitta explain abc1234        # Explain a commit
gitta explain src/main.py    # Explain uncommitted changes to a file

Merging

Merge the PR for your current branch directly from the terminal:

gitta merge              # Merge commit (default)
gitta merge --squash     # Squash and merge
gitta merge --rebase     # Rebase and merge
gitta merge -D           # Merge without deleting the remote branch

Requires the GitHub CLI (gh).

Utilities

gitta log                       # Show recent commits in a table
gitta log -n 20                 # Show last 20 commits
gitta config list               # Show all config values
gitta config get <key>          # Get a config value
gitta config set <key> <value>  # Update a config value
gitta doctor                    # Diagnose setup issues

Configuration

Config is stored in ~/.gitta/config.toml. Available settings:

Key Description Default
provider AI provider name (e.g. openai)
base_url API endpoint
model Model identifier (e.g. gpt-4o)
style Commit format: conventional, simple, detailed
max_diff_chars Max diff size sent to AI 32000
multi_file Enable split commits by default false

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gitta-0.1.5.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gitta-0.1.5-py3-none-any.whl (35.4 kB view details)

Uploaded Python 3

File details

Details for the file gitta-0.1.5.tar.gz.

File metadata

  • Download URL: gitta-0.1.5.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for gitta-0.1.5.tar.gz
Algorithm Hash digest
SHA256 31ad16516b29c865facbf0726323502e9d409d2fa46f39c2a2739c0faca6b5a9
MD5 f3599726d2b061b3f341696313152f00
BLAKE2b-256 f2fbeea2ed7f3579b1e0ae051a2c5e0cf66b89aa216ec8880b92bf8704af2aa6

See more details on using hashes here.

File details

Details for the file gitta-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: gitta-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 35.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for gitta-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 4592316a055309ae8888aeb44476ac87c05d82ceec82ab36c017c4f313b2f76e
MD5 aeef73da770abeb9e124a052b23a3b81
BLAKE2b-256 13680051a40a3e1aaafca025325da30a8e876f820444b031b504b578771cd371

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page