Skip to content

Its4Nik/GitAI

Repository files navigation

gitai: AI-Powered Git Utilities

gitai CLI License: MIT

GitAi is a CLI tool that leverages AI to enhance your Git workflow. Generate commit messages, suggest semantic version bumps, create changelogs, and more - all powered by AI providers like Google Gemini, Ollama, and OpenAI.

Features ✨

  • AI-Generated Commit Messages: Create meaningful commit messages from staged changes
  • Semantic Version Suggestions: Get version bump recommendations (major/minor/patch)
  • Changelog Generation: Automatically create detailed changelogs
  • Multiple AI Providers: Support for Google Gemini, Ollama, OpenAI, and more
  • Diff Summary: Create summaries of changes between 2 commits or tags.
  • Commit Templates: Conventional Commits, Angular, Gitmoji, and custom formats
  • Debug Tools: Track API usage and debug AI interactions

Installation ⚡

# Install globally with Bun
bun add -g @its_4_nik/gitai
npm install -g @its_4_nik/gitai
yarn global add @its_4_nik/gitai

# Or run directly with:
bunx @its_4_nik/gitai
npx @its_4_nik/gitai

Configuration ⚙️

First, configure your AI providers:

gitai configure

Follow the interactive prompts to:

  1. Select your default AI provider
  2. Configure provider-specific settings (API keys, models)
  3. Choose your preferred commit template
  4. Set the max commits to analyze for version/changelog

Configuration is saved to ~/gitai.json or your project directory .gitai.json

Usage 🚀

Generate a Commit Message

# Stage your changes first
git add .

# Generate commit message
gitai commit

# Use a specific template
gitai commit --template gitmoji

Suggest Version Bump

# Suggest semantic version bump based on recent commits
gitai version

Generate Changelog

# Print changelog to console
gitai changelog

# Save changelog to file
gitai changelog --output CHANGELOG.md

Create diff summary

# Print to console
gitai diff-summary HEAD v1.1.3
Diff Summary (HEAD → v1.1.3):

The diff reveals several significant changes related to publishing, dependency management, and overall workflow. The `release-publish.yaml` workflow has been modified to remove permissions for `id-token`, simplify the version setting process by directly calling `npm version` without checking for existing tags, and transition to `bun publish` for publishing to npm using a `NODE_AUTH_TOKEN` environment variable. Additionally, the `bun.lock` file shows that the `ignore` package was removed, and several dependencies were updated including `camelcase` and `glob`. The `package.json` file had a version change to `1.0.14`, removed the repository URL, and had a minor update to typescript version dependencies.

Here's a short listing of changes:
*   `.github/workflows/release-publish.yaml`: Modified publishing workflow to use bun, and updated versioning logic.
*   `bun.lock`: Removed `ignore` package and updated a number of packages.
*   `package.json`: Version bump and repository url removal.

**Really short summary: The workflow transitions to using bun for publishing, updates dependencies, and removes repository URL.**

# Format as markdown
gitai diff-summary --markdown HEAD v1.1.3
## Diff Summary: HEAD → v1.1.3

The changes between `HEAD` and `v1.1.3` involve modifications to the release publishing workflow and dependency updates.

Here's a summary of the key differences:

*   **Release Workflow:**
    *   The release workflow (`.github/workflows/release-publish.yaml`) had several modifications.
    *   The `permissions` block used for authentication was removed.
    *   The workflow no longer checks for the existence of a tag before executing `npm version`, instead always running `npm version "$TAG_NAME"`
    *   The workflow was updated to use bun to publish to npm.
*   **Dependency Updates:**
    *   The `bun.lock` file shows several dependency version updates, including `camelcase` and `glob`.
    *   The `ignore` dependency was removed from `bun.lock`

Short listing of changes:
* Removed permissions block from github workflow
* Changed publishing mechanism to use bun
* Upgraded many dependencies in bun.lock
* Removed ignore dependency
* Removed repository metadata

Breaking changes: None

Debug API Usage

# Enable debug mode for any command
gitai commit --debug

# View API usage summary
gitai debug-summary

Examples 📋

Gitmoji-style Commit

✨ Add dark mode toggle
- Implemented theme switching
- Added persistence
- Updated UI components

Version Suggestion

$ gitai version
Suggested version bump: minor

Changelog Output

## [1.1.0] - 2025-06-15

### Added
- Dark mode toggle (#42) [9fdc74b]
- User preferences page

### Fixed
- Header alignment issue (#38) [a1b2c3d]

Commit Templates 📝

AI Commit supports multiple commit templates:

Template Format
Conventional <type>: <description>
Angular <type>(<scope>): <subject>
Gitmoji ✨ <subject>
Minimal <subject>
Technical <type>(<scope>): <ticket>

Supported AI Providers 🤖

Provider Models Required Config
Google Gemini gemini-pro, gemini-1.5-flash, gemini-2.0-flash, gemini-2.0-flash-lite, API Key
Ollama llama3, mistral, etc. Base URL (optional)
OpenAI gpt-4, gpt-3.5-turbo API Key

Debugging 🐛

Enable debug mode to track API usage:

gitai commit --debug

View API usage summary:

gitai debug-summary

# Sample output
API Request Summary:
====================
Total Requests: 12
Total Prompt Chars: 5482
Total Response Chars: 1248
Average Duration: 1243ms

By Command:
- commit: 8
- version: 2
- changelog: 2

By Provider:
- gemini: 12

By Model:
- gemini-pro: 12

Detailed logs are saved to gitai-debug.log

Contributing 🤝

Please See Contributing

License 📄

This project is licensed under the MIT License - see the LICENSE file for details.

Support ❤️

If you find this tool useful, please consider starring the repository on GitHub!

About

A smart git helper using the power of ai - With support for multiple models!

Resources

License

Contributing

Stars

Watchers

Forks