Skip to main content

Automagically group and commit semantically related changes in your Git repository with AI.

Project description

✨ VibeGit ✨

Spend more time (vibe) coding and less time cleaning your messy git repository.

PyPI - Version py_versions


^ You before discovering VibeGit         ^ You after discovering VibeGit


Never ever do manual Git housekeeping again

Let's be honest. You know the problem. You spent hours or days working on a feature and forgot to group and commit changes once in a while. Suddenly you are facing 30 open file changes, related to a dozen or so different subtasks.

Now comes the fun part: Crafting perfect, atomic commits.

You could:

  1. Spend 20 minutes meticulously using git add -p, squinting at diffs like a code archaeologist.
  2. Write a vague commit message like "fix stuff" and promise yourself you'll rebase -i later (spoiler: you won't).
  3. Just git commit -a -m "WIP" and call it a day, leaving a dumpster fire for future you (or your poor colleagues).

There has to be a better way.

Enter VibeGit: Your AI-Powered Git Housekeeper 🤖🧹

[!WARNING] Brace yourself. What you're about to see now might feel like magic.

In your messy Git repository, just hit

vibegit commit

And it automagically groups related changes (hunks) together based on their semantic meaning!

No more manual patch-adding hell. No more "what did I even change here?" moments.

VibeGit analyzes your diff, considers your branch name, peeks at your recent commit history (for stylistic consistency, not blackmail... probably), and then proposes logical, beautifully grouped commits with AI-generated commit messages.

[!NOTE] VibeGit currently only works if at least one commit exists. If you want to use it in a freshly initialized repository, you may create an empty commit with git commit --allow-empty -m "initial commit".

Features That Will Make You Question Reality (or at Least Your Old Workflow)

  • 🧠 Semantic Hunk Grouping: VibeGit doesn't just look at file names; it looks at what the code does to bundle related changes. It's like magic, but with more AI slop.
  • ✍️ AI-Generated Commit Messages: Get sensible, well-formatted commit messages suggested for each group. Tweak them or use them as-is. Your commit log will suddenly look respectable.
  • 🤖 Multiple Workflow Modes:
    • YOLO Mode: Feeling lucky? Automatically apply all of VibeGit's proposals. What could possibly go wrong?
    • Interactive Mode: Review each proposed commit, edit the message in your default editor, and apply them one by one. For the cautious (or skeptical).
    • Summary Mode: Get a quick overview of what VibeGit plans to do before diving in.
  • 🚫 Sanity Check (coming soon™): Checks whether you didn't accidentally forgot your life pension in form of a Bitcoin key in your .env file.

Setup: Get Ready to Vibe

Requirements

  • A computer
  • Python>=3.11

Installation

Via pip:

pip install vibegit

Via pipx:

pipx install vibegit

Run as tool without explicit installation with uv:

uvx vibegit

Set API Keys

Before your first vibe git'ing session, you may have to configure VibeGit. This can be done with the vibegit config set <path> <value> CLI command. You will most likely have to provide your LLM API key. Google's Gemini models are used by default, so you have will to set api_keys.google_api_key to your API key:

vibegit config set api_keys.google_api_key <your-secret-api-key>

If you don't have a Gemini API key yet, get one here.

Configuration

Use vibegit config to print the current configuration to the console.

To set single configuration values, vibegit config set <path> <value> and provide the configuration path in dot notation, e.g. model.name.

For a more convenient editing of the whole configuration file, use vibegit config open which will open the config file in your system's default editor.

Below is a description of the most relevant configuration options.

Models

Gemini 2.5 Flash is used by default, as it provides arguably the best trade-off between performance, price and latency. However, you can use any model that supports structured outputs given a JSON schema.

VibeGit has been tested with:

  • Gemini 2.5 Flash (google_genai:gemini-2.5-flash-preview-04-17)
  • Gemini 2.5 Pro (google_genai:gemini-2.5-pro-preview-03-25)
  • GPT 4o (openai:gpt-4o)
  • GPT 4.1 (openai:gpt-4.1)
  • o4-mini (openai:o4-mini)
  • o3-mini (openai:o3-mini)

You can use any other model that meets the aforementioned requirements and is supported by LangChain. The model name needs to be provided in the init_chat_model format.

To configure a model, use the following command:

vibegit config set model.name <model-name>

[!NOTE] Models can't be configured on repository level at the moment.

Incomplete Commit Proposals

VibeGit can be configured to generate commit proposals that include all open changes and exclude changes which may look unfinished or contain obvious errors (enabled by default).

To control this option, use

vibegit config set allow_excluding_changes <true/false>

The behavior of the excluding behavior can be customized with a .vibegitrules file (see next section).

.vibegitrules

You may provide a .vibegitrules file in the root of your repository with custom instructions for the generation of commit proposals. Typical use cases are:

  • Commit message style
  • Commit scope and granularity
  • Excluding certain files or changes, either on semantic grounds or based on filetype

See VibeGit's .vibegitrules file for an example.

The Future: More Vibes, More Git? 🚀

Right now, VibeGit focuses on commit. But the vision is grand! Imagine AI assistance for:

  • vibegit merge (Resolving conflicts? Maybe too ambitious...)
  • vibegit rebase (Interactive rebasing suggestions?)
  • vibegit checkout (Suggesting relevant branches?)

We're aiming to turn this quirky tool into a full-fledged AI Git companion.

Contributing (Please Help Us Vibe Better!)

Found a bug? Have a killer feature idea? Did the AI rm -rfed your repository once again?

Open an issue or submit a pull request! We appreciate constructive feedback and contributions. Let's make Git less of a chore, together.

License

Currently under MIT License. Feel free to blatantly steal as much code as you want.


Happy Vibing! ✨

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

vibegit-0.1.4.tar.gz (24.0 kB view details)

Uploaded Source

Built Distribution

vibegit-0.1.4-py3-none-any.whl (22.0 kB view details)

Uploaded Python 3

File details

Details for the file vibegit-0.1.4.tar.gz.

File metadata

  • Download URL: vibegit-0.1.4.tar.gz
  • Upload date:
  • Size: 24.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.8

File hashes

Hashes for vibegit-0.1.4.tar.gz
Algorithm Hash digest
SHA256 f2c00debbb36d8904aee74d30e368e42e8a3d2d7ee87cf02d431ce76810e926d
MD5 8250bbc94ad1119c4947e71f0ed34c2f
BLAKE2b-256 6c524f26088d8e15feffc2e30cc63ba0cfaca91c2e2f83ba90697ee8a8027fc1

See more details on using hashes here.

File details

Details for the file vibegit-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: vibegit-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 22.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.8

File hashes

Hashes for vibegit-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 0c32c36fa5a021c2ba64280d463a9713ab1484570eac373bd93da010d112bcd7
MD5 2f4686a6a9fa8458dac49b1e091a7970
BLAKE2b-256 7407395b10a5a1424ab4e5b3d5358c504fb98f8a4780c51d0a2c8debb1cefd8b

See more details on using hashes here.

Supported by

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