Skip to content

ademajagon/gix

Repository files navigation

gix logo

gix: Git on the command line, with a bit of AI.

Release Build


gix generates conventional commit messages from your staged diff and splits large changes into small commits.

Why gix

Writing a good commit message takes discipline and it's usually the first thing skipped when moving fast. gix handles it for you, read the diff, generate the message, commit.

For larger changes, gix split groups related hunks by semantic similarity and proposes one atomic commit per group, each with its own generated message. It turns one big noisy commit into a clean history.


Features

  • Generates Conventional Commits from staged diffs
  • gix split splits a large diff into multiple semantic commits
  • Embedding-based hunk clustering for intelligent grouping
  • Multiple AI providers, OpenAI, Gemini or Ollama (local)
  • Bring your own API key
  • Runs fully offline with Ollama
  • Single binary, no runtime dependencies

Installation

macOS (Homebrew)

brew tap ademajagon/gix
brew install gix

Linux / Windows

Download binaries from Releases and add it to your PATH.

From source

go install github.com/ademajagon/gix@latest

Usage

Generate a commit message

git stage .
gix commit

You'll see a suggested message and can accept, edit, regenerate or cancel.

Split a large diff into multiple commits (beta)

git stage .
gix split

gix analyses the staged diff, groups related hunks and proposes one commit per group


Configuration

gix stores configuration locally on your machine.

Set provider

gix config set-provider openai    # default
gix config set-provider gemini
gix config set-provider ollama    # local, no API key required

Set API key

gix config set-key                        # OpenAI
gix config set-key --provider gemini      # Gemini

Configure both providers and switch anytime.


Supported Providers

Provider Chat Model Embeddings
OpenAI gpt-4o text-embedding-3-small
Gemini gemini-flash-latest gemini-embedding-001
Ollama llama3.1:8b (configurable) nomic-embed-text (configurable)

Update checks

gix checks for new releases in the background after each command and prints a notice if one is available. Results are cached for 48 hours and the check never blocks the primary command.

To disable:

gix config update-check off
# or for a single session:
GIX_CHECKPOINT_DISABLE=1 gix commit

License

MIT © Agon Ademaj

About

Git, but with superpowers.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors