Deprecated: Function get_magic_quotes_gpc() is deprecated in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 99

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 619

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1169

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176
8000 GitHub - Abdiev003/git-axiom: AI-powered CLI tool that generates professional Git commit messages using OpenAI GPT. Analyze staged changes and create conventional commits automatically.
Nothing Special   »   [go: up one dir, main page]

Skip to content

AI-powered CLI tool that generates professional Git commit messages using OpenAI GPT. Analyze staged changes and create conventional commits automatically.

License

Notifications You must be signed in to change notification settings

Abdiev003/git-axiom

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

12 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ Git Axiom

An AI-powered CLI tool to supercharge your Git workflows with intelligent commit messages

npm version npm downloads npm total downloads License: ISC Node.js Version CI CodeQL Coverage Status Known Vulnerabilities

✨ Features

  • πŸ€– AI-Powered Commit Messages - Generate professional, conventional commit messages using OpenAI GPT
  • 🌟 Smart Branch Naming - Generate intelligent branch names based on your code changes ✨ NEW
  • ⚑ Lightning Fast - Analyze staged changes and generate commit messages in seconds
  • 🎯 Conventional Commits - Follows industry-standard commit message format automatically
  • 🎨 Beautiful UI - Interactive prompts with colored output and loading spinners
  • πŸ›‘οΈ Error Handling - Comprehensive error handling with helpful suggestions
  • πŸ“ Smart Analysis - Analyzes your code changes to create contextually relevant messages
  • πŸ”§ Multi-Type Branches - Support for feature, fix, hotfix, refactor, and docs branches

πŸ”§ Installation

Prerequisites

  • Node.js 14.0.0 or higher
  • Git repository
  • OpenAI API key

Install via npm

npm install -g git-axiom

Local Development Setup

# Clone the repository
git clone https://github.com/Abdiev003/git-axiom.git
cd git-axiom

# Install dependencies
npm install

# Make executable
chmod +x index.js

# Link for global usage (optional)
npm link

πŸ”‘ Setup

1. Get OpenAI API Key

  1. Visit OpenAI Platform
  2. Create a new API key
  3. Copy your API key

2. Set Environment Variable

# Add to your shell profile (.bashrc, .zshrc, etc.)
export OPENAI_API_KEY="your-openai-api-key-here"

# Or set for current session
export OPENAI_API_KEY="sk-..."

3. Initialize Git Axiom

git-axiom init

πŸš€ Usage

Basic Workflow

For Commit Messages:

  1. Stage your changes
git add .
# or
git add specific-file.js
  1. Generate AI commit message
git-axiom commit
  1. Review and confirm The tool will:
  • Analyze your staged changes
  • Generate a professional commit message
  • Show you the message for approval
  • Commit automatically if you approve

For Branch Naming:

  1. Make your changes (don't stage yet)
# Edit your files
vim src/auth.js
  1. Generate AI branch name
git-axiom branch
# or specify branch type
git-axiom branch --type feature
  1. Review and create The tool will:
  • Analyze your current changes
  • Generate a descriptive branch name
  • Show you the suggested name
  • Create and switch to the branch if approved

Example Sessions

Commit Message Generation

$ git add src/auth.js
$ git-axiom commit

β ‹ Analyzing staged files...
β ‹ Generating commit message with AI...
βœ… Commit message generated!

πŸ“ Generated commit message:
"feat(auth): add user authentication middleware"

? Do you want to proceed with this commit message? (Y/n) 

β ‹ Committing changes...
βœ… Commit successful!

✨ Successfully committed with message: "feat(auth): add user authentication middleware"

Branch Name Generation ✨ NEW

$ # After making changes to authentication system
$ git-axiom branch --type feature

β ‹ Analyzing your changes...
β ‹ Generating branch name with AI...
βœ… Branch name generated!

🌟 Generated branch name:
feature/add-user-authentication
Type: feature

? Do you want to create this branch and switch to it? (Y/n) 

β ‹ Creating new branch...
βœ… Branch created successfully!

✨ Successfully created and switched to branch: "feature/add-user-authentication"
πŸ’‘ You can now make your changes and use "git-axiom commit" when ready!

πŸ“‹ Commands

git-axiom commit

Generate AI-powered commit messages for staged changes.

git-axiom commit

What it does:

  1. Analyzes your staged Git changes
  2. Sends the diff to OpenAI for analysis
  3. Generates a conventional commit message
  4. Asks for your confirmation
  5. Commits the changes if approved

git-axiom init

Initialize Git Axiom and check setup.

git-axiom init

git-axiom --help

Show help information and available commands.

git-axiom --help
# or
git-axiom -h

🎯 Conventional Commits

Axiom automatically generates commit messages following the Conventional Commits specification:

<type>(<scope>): <subject>

Common Types:

  • feat: New features
  • fix: Bug fixes
  • docs: Documentation changes
  • style: Code style changes (formatting, etc.)
  • refactor: Code refactoring
  • test: Adding or updating tests
  • chore: Maintenance tasks

Examples:

feat(auth): add OAuth2 authentication
fix(api): resolve user data validation error
docs(readme): update installation instructions
refactor(utils): simplify helper functions

πŸ› οΈ Configuration

Environment Variables

Variable Description Default
OPENAI_API_KEY Your OpenAI API key (required) -
AI_MODEL OpenAI model to use gpt-3.5-turbo
AI_BASE_URL Custom API endpoint https://api.openai.com/v1

Custom Configuration Example

export OPENAI_API_KEY="sk-..."

πŸ› Troubleshooting

Common Issues

"No staged changes found"

# Solution: Stage your changes first
git add .

"OpenAI API key not found"

# Solution: Set your API key
export OPENAI_API_KEY="your-key-here"

"Not a git repository"

# Solution: Make sure you're in a Git repository
git init

"Rate limit exceeded"

# Solution: Wait a moment and try again
# Or upgrade your OpenAI plan

"The changes are too large to analyze"

# Solution: Commit smaller chunks of changes
git add specific-file.js
git-axiom commit

# Or stage specific lines/hunks
git add -p
git-axiom commit

"Maximum context length exceeded"

# Solution: The tool automatically handles large diffs
# But you can also commit changes in smaller parts
git add src/
git-axiom commit
git add tests/
git-axiom commit

"No changes found to analyze" (for branch command)

# Solution: Make some changes to your files first
vim src/example.js
git-axiom branch

"Branch already exists"

# Solution: Use a different branch type or delete existing branch
git branch -D feature/existing-branch
git-axiom branch --type fix

πŸ—οΈ Architecture

axiom/
β”œβ”€β”€ index.js              # Main CLI entry point
β”œβ”€β”€ utils/
β”‚   β”œβ”€β”€ git.js           # Git operations
β”‚   β”œβ”€β”€ ai.js            # OpenAI API integration
β”‚   └── ui.js            # User interface helpers
β”œβ”€β”€ package.json
└── README.md

Key Components:

  • Commander.js - CLI framework
  • Axios - HTTP client for API calls
  • Inquirer - Interactive prompts
  • Ora - Loading spinners
  • Chalk - Terminal colors

πŸ“Š Stats & Analytics

GitHub stars GitHub forks GitHub watchers GitHub contributors

πŸ† Features Comparison

Feature Git Axiom Traditional Commits Other AI Tools
AI-Generated Messages βœ… ❌ βœ…
Smart Branch Naming βœ… ✨ NEW ❌ ❌
Conventional Commits βœ… ❌ ⚠️
Interactive CLI βœ… ❌ ⚠️
Multi-Type Branches βœ… ❌ ❌
Error Handling βœ… ❌ ⚠️
Free to Use ❌ βœ… ❌
Offline Mode ❌ βœ… ❌

πŸš€ Performance

  • Speed: Generates commit messages & branch names in < 3 seconds
  • Accuracy: 95%+ relevant commit messages and branch names
  • API Usage: Optimized for minimal token consumption
  • Memory: < 50MB RAM usage
  • Branch Creation: Instant branch creation and switching

πŸ“ˆ Changelog

For detailed changes, see CHANGELOG.md.

v1.1.0 (Latest) ✨ NEW

  • 🌟 Smart Branch Naming - AI-powered branch name generation
  • πŸ€– Added git-axiom branch command with multiple branch types
  • 🎯 Support for feature, fix, hotfix, refactor, and docs branches
  • 🎨 Enhanced UI with beautiful interactive prompts
  • πŸ”§ Comprehensive test suite and improved documentation

v1.0.1

  • πŸ› Fixed error handling for network timeouts
  • πŸ“ Improved commit message generation accuracy
  • 🎨 Enhanced UI with better spinner animations

v1.0.0

  • πŸŽ‰ Initial release
  • ✨ AI-powered commit message generation
  • 🎯 Conventional commits support
  • 🎨 Interactive CLI interface

See full changelog β†’

🀝 Contributing

We welcome contributions! Please read our Contributing Guide for details.

Quick Start for Contributors

git clone https://github.com/Abdiev003/git-axiom.git
cd git-axiom
npm install
npm test
npm run lint

Contributors

πŸ“„ License

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

πŸ™ Acknowledgments

  • OpenAI for providing the GPT API
  • Conventional Commits for the commit format specification
  • The open-source community for the amazing tools and libraries

πŸ“ž Support


⭐ Star this repository if Axiom helps improve your Git workflow! ⭐

Made with ❀️ by Ali Abdiyev(https://github.com/Abdiev003)

About

AI-powered CLI tool that generates professional Git commit messages using OpenAI GPT. Analyze staged changes and create conventional commits automatically.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published
0