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.
^ 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:
- Spend 20 minutes meticulously using
git add -p
, squinting at diffs like a code archaeologist. - Write a vague commit message like
"fix stuff"
and promise yourself you'llrebase -i
later (spoiler: you won't). - 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 -rf
ed 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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | f2c00debbb36d8904aee74d30e368e42e8a3d2d7ee87cf02d431ce76810e926d |
|
MD5 | 8250bbc94ad1119c4947e71f0ed34c2f |
|
BLAKE2b-256 | 6c524f26088d8e15feffc2e30cc63ba0cfaca91c2e2f83ba90697ee8a8027fc1 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0c32c36fa5a021c2ba64280d463a9713ab1484570eac373bd93da010d112bcd7 |
|
MD5 | 2f4686a6a9fa8458dac49b1e091a7970 |
|
BLAKE2b-256 | 7407395b10a5a1424ab4e5b3d5358c504fb98f8a4780c51d0a2c8debb1cefd8b |