A powerful, cross-platform CLI and GUI tool that helps you write better commit messages with AI-powered suggestions and automated changelog generation.
- CLI Mode: Fast terminal-based interface with
fzfintegration - GUI Mode: Beautiful web-based Streamlit interface
- Generate intelligent commit messages using Gemini 1.5 Flash
- Context-aware suggestions based on your code changes
- Supports all major commit types and conventions
- Automatic changelog creation from git history
- Professional formatting with AI enhancement
- Version-based organization and categorization
- Universal Linux Support: Ubuntu, Debian, CentOS, Fedora, Arch, openSUSE, Alpine
- Automatic Dependency Management: Detects and installs required packages
- Virtual Environment: Isolated Python dependencies with
.venv
- Real-time diff preview
- Visual file selection with git status indicators
- One-click commit execution
- Professional commit type categorization
# Clone the repository
git clone https://github.com/usermp/gitt.git
cd gitt
# Make installer executable and run
chmod +x install.sh
./install.shThe installer automatically:
- ✅ Detects your Linux distribution
- ✅ Installs system dependencies (git, fzf, python3)
- ✅ Sets up the CLI tool globally
- ✅ Creates isolated Python virtual environment
- ✅ Installs GUI components
- ✅ Configures AI features
Click to expand manual installation steps
# Ubuntu/Debian
sudo apt update && sudo apt install -y git fzf python3 python3-pip python3-venv
# CentOS/RHEL/Fedora
sudo dnf install -y git fzf python3 python3-pip python3-venv
# Arch/Manjaro
sudo pacman -S git fzf python python-pip
# openSUSE
sudo zypper install git fzf python3 python3-pip python3-venv# 1. Install CLI
sudo cp gitt.sh /usr/local/bin/gitt
sudo chmod +x /usr/local/bin/gitt
# 2. Setup GUI (optional)
mkdir -p ~/.config/gitt
cp gitt_gui.py requirements.txt .env.example changelog_generator.py ~/.config/gitt/
# 3. Create virtual environment
cd ~/.config/gitt
python3 -m venv .venv
.venv/bin/pip install -r requirements.txtgitt- Interactive file selection with
fzf - Commit type dropdown
- Manual message input
- Instant commit execution
gitt --gui- Opens at
http://localhost:8501 - Visual file selection with status icons
- AI-powered commit message generation
- Real-time diff preview
- One-click commits
# Recent commits
~/.config/gitt/changelog_generator.py --since "1 week ago"
# Specific version
~/.config/gitt/changelog_generator.py --version "v2.0.0" --since "v1.9.0"
# Basic mode (no AI)
~/.config/gitt/changelog_generator.py --no-ai --since "1 month ago"gitt --help- Visit Google AI Studio
- Create a new API key
- Configure in your environment:
# Method 1: Global configuration
cd ~/.config/gitt
cp .env.example .env
echo "GEMINI_API_KEY=your_actual_api_key_here" > .env
# Method 2: Project-specific
# Create .env in your project root with:
GEMINI_API_KEY=your_actual_api_key_here| Type | Description | Icon | Example |
|---|---|---|---|
| feat | New feature | ✨ | [feat] Add user authentication |
| fix | Bug fix | 🐛 | [fix] Resolve login timeout issue |
| docs | Documentation | 📝 | [docs] Update API documentation |
| style | Code formatting | 💄 | [style] Fix indentation in main.py |
| refactor | Code restructuring | ♻️ | [refactor] Simplify user service |
| test | Testing | ✅ | [test] Add unit tests for utils |
| chore | Maintenance | 🔧 | [chore] Update dependencies |
| perf | Performance | ⚡ | [perf] Optimize database queries |
| ci | CI/CD | 👷 | [ci] Add GitHub Actions workflow |
| build | Build system | 📦 | [build] Update webpack config |
| revert | Revert changes | ⏪ | [revert] Undo breaking changes |
🚀 Launching Gitt CLI...
📂 Current directory: /home/user/project
Select files to add:
❯ [ALL] Add all changes
📄 src/main.py
📝 README.md
📦 package.json
Select commit type:
❯ feat - Feature
fix - Fix
docs - Documentation
Enter commit message: Add AI-powered commit generation
✅ Commit created: [feat] Add AI-powered commit generation
- 📁 Visual File Management: Checkbox selection with git status icons
- 🎨 Modern Interface: Clean, intuitive Streamlit design
- 🤖 AI Integration: One-click intelligent commit messages
- 👀 Live Preview: Real-time diff and commit preview
- ⚡ Quick Actions: Add files, commit, refresh status
gitt/
├── gitt.sh # Main CLI script
├── gitt_gui.py # Streamlit GUI application
├── changelog_generator.py # AI changelog generator
├── install.sh # Cross-platform installer
├── requirements.txt # Python dependencies
├── .env.example # Environment template
├── demo.sh # Demo setup script
└── test_gui.py # GUI testing utility
# 1. Fork and clone
git clone https://github.com/yourusername/gitt.git
cd gitt
# 2. Setup development environment
./install.sh
# 3. Make changes and test
./demo.sh # Creates test environment
gitt --gui # Test GUI mode
# 4. Commit using gitt itself!
gitt
# 5. Submit PR- CLI Script:
/usr/local/bin/gitt - GUI Components:
~/.config/gitt/ - Virtual Environment:
~/.config/gitt/.venv/ - Configuration:
~/.config/gitt/.env
GEMINI_API_KEY=your_gemini_api_key_here # Required for AI features- ✅ Ubuntu 18.04+ / Debian 10+
- ✅ CentOS 7+ / RHEL 7+ / Fedora 30+
- ✅ Arch Linux / Manjaro
- ✅ openSUSE Leap / Tumbleweed
- ✅ Alpine Linux 3.12+
- ✅ Any distribution with
python3,git, andfzf
- CLI Mode: Lightning fast with
fzfintegration - GUI Mode: Responsive web interface via Streamlit
- AI Generation: ~2-3 seconds for commit messages
- Virtual Environment: Isolated dependencies, no conflicts
# Multiple projects changelog
for dir in project1 project2 project3; do
cd $dir && ~/.config/gitt/changelog_generator.py --since "1 week ago"
done# Use with conventional commits
gitt # Select 'feat' type
# Enter: "user authentication with OAuth2"
# Result: [feat] user authentication with OAuth2# VS Code terminal
gitt --gui # Opens in browser tab
# Vim/Neovim users
alias gcm='gitt' # Quick accessCommon Issues
# Ensure /usr/local/bin is in PATH
echo $PATH | grep /usr/local/bin
# If not, add to ~/.bashrc or ~/.zshrc:
export PATH="/usr/local/bin:$PATH"# Reinstall dependencies
cd ~/.config/gitt
.venv/bin/pip install -r requirements.txt# Kill existing streamlit processes
pkill -f streamlit
# Or use different port
.venv/bin/streamlit run gitt_gui.py --server.port 8502# Verify git repository
git status # Should show git info
# Ensure you're in the right directory
pwd- Sina Bayandorian - Original
gittinspiration - Google Gemini - AI-powered commit messages
- Streamlit - Beautiful web interface
- fzf - Fuzzy finder for CLI
This project is licensed under the MIT License - see the LICENSE file for details.
- 🐛 Issues: GitHub Issues
- 💬 Discussions: GitHub Discussions
- ⭐ Star the repo if you find it helpful!
Made with ❤️ for better git workflows
| Commit Type | Description | Icon |
|---|---|---|
| feat | A new feature | ✨ |
| fix | A bug fix | 🐛 |
| chore | Routine tasks and maintenance | 🔧 |
| refactor | Code changes that do not affect functionality | ♻️ |
| docs | Documentation changes | 📝 |
| style | Formatting changes (no code change) | 💄 |
| test | Adding or updating tests | ✅ |
| perf | Performance improvements | ⚡ |
| ci | Changes related to continuous integration | 👷 |
| build | Changes related to the build process | 📦 |
| revert | Reverting previous changes | ⏪ |
| none | No specific type selected | 🔄 |
🚀 Launching Gitt CLI...
Select files to add:
> [ALL] Add all changes
src/main.py
README.md
package.json
Select commit type:
> feat - Feature
fix - Fix
docs - Documentation
Enter commit message: Add AI-powered commit generation
✅ Commit created: [feat] Add AI-powered commit generation
The GUI provides:
- 📁 Visual file selection with status indicators
- 🎨 Modern, intuitive interface
- 🤖 One-click AI commit message generation
- 👀 Real-time diff preview
- ⚡ Instant commit execution
Create a .env file with:
GEMINI_API_KEY=your_gemini_api_key_here- CLI Script:
/usr/local/bin/gitt - GUI Components:
~/.config/gitt/ - Config Files:
~/.config/gitt/.env
Contributions are welcome! Here's how you can help:
- 🍴 Fork the repository
- 🌿 Create a feature branch (
git checkout -b feature/amazing-feature) - ✨ Commit your changes (
gitt- use the tool itself!) - 🚀 Push to the branch (
git push origin feature/amazing-feature) - 🎯 Open a Pull Request
git clone https://github.com/yourusername/gitt
cd gitt
pip install -r requirements.txt
cp .env.example .env
# Add your Gemini API key to .envSee CHANGELOG.md for a detailed history of changes.
This project was inspired by the work of Sina Bayandorian, whose original gitt project provided valuable insights into creating a CLI for better commit messages.
Special thanks to:
- 🤖 Google Gemini AI for intelligent commit message generation
- 🎨 Streamlit for the beautiful web interface
- 🔍 fzf for excellent terminal-based selection UI
This project is licensed under the MIT License. See the LICENSE file for details.
If you encounter any issues or have questions:
- 📖 Check the documentation above
- 🐛 Open an issue on GitHub
- 💬 Start a discussion for feature requests
If you find this project helpful, please consider giving it a star! ⭐