git-suggest
v1.0.1
Published
A lightweight command-line tool that automatically generates contextual, high-quality Git commit messages based on your staged code changes. Powered by GitHub Copilot CLI, it helps you write smarter commits with less typing.
Maintainers
Keywords
Readme
git-suggest 🤖
A lightweight command-line tool that automatically generates and suggests contextual, high-quality Git commit messages based on your staged code changes. Powered by GitHub Copilot CLI, it helps you write smarter commits with less typing.
Features
- AI-Powered: Uses GitHub Copilot CLI to generate intelligent commit messages
- Contextual: Analyzes your staged changes to create relevant commit messages
- Conventional Commits: Follows semantic commit message conventions
- Shell Integration: Auto-complete support for
git commit -mcommands - Cross-Platform: Works on Windows, macOS, and Linux
- Interactive Mode: Choose from suggestions or edit messages before committing
- Type Detection: Automatically detects commit types (feat, fix, docs, etc.)
Quick Start
Installation
npm install -g git-suggestPrerequisites
git-suggest requires:
- Git
- GitHub CLI
- GitHub Copilot CLI
- GitHub Copilot subscription
The installation script will attempt to install missing prerequisites automatically.
Setup
Authenticate with GitHub:
gh auth loginSetup shell integration:
git-suggest setupRestart your terminal or source your shell config:
source ~/.bashrc # or ~/.zshrc
📖 Usage
Basic Usage
Stage your changes:
git add .Generate a commit message:
git-suggest generateOr use the shorthand:
git-suggest g
Interactive Mode
The tool will analyze your staged changes and present you with options:
📝 Suggested commit message:
"feat(auth): add OAuth2 login integration"
? What would you like to do?
❯ Use this message
Edit this message
Generate another suggestion
CancelShell Integration
After running git-suggest setup, you can get autocomplete suggestions when typing:
git commit -m "feat(data-<TAB>
# Automatically suggests: "feat(data-validation): add email format validation"Command Options
# Generate with specific type
git-suggest generate --type feat
# Generate with scope
git-suggest generate --type fix --scope auth
# Generate with custom prefix
git-suggest generate --prefix "hotfix:"
# Non-interactive mode
git-suggest generate --no-interactiveAvailable Commands
git-suggest generate- Generate commit message from staged changesgit-suggest setup- Setup shell integrationgit-suggest check- Check if prerequisites are installedgit-suggest --help- Show help information
🎯 Commit Types
git-suggest supports all conventional commit types:
| Type | Description |
|------|-------------|
| feat | A new feature |
| fix | A bug fix |
| docs | Documentation only changes |
| style | Changes that do not affect the meaning of the code |
| refactor | A code change that neither fixes a bug nor adds a feature |
| perf | A code change that improves performance |
| test | Adding missing tests or correcting existing tests |
| chore | Changes to the build process or auxiliary tools |
| ci | Changes to CI configuration files and scripts |
| build | Changes that affect the build system or external dependencies |
| revert | Reverts a previous commit |
🔧 Configuration
Shell Support
git-suggest supports:
- Bash (Linux, macOS, Windows WSL)
- Zsh (macOS default, Linux)
- Fish (Cross-platform)
Environment Variables
SHELL- Automatically detected shell typeHOME- User home directory for config files
📋 Examples
Example 1: New Feature
# You added a new login component
git add src/components/Login.tsx
git-suggest generate
# Output: "feat(auth): add login component with form validation"Example 2: Bug Fix
# You fixed a validation bug
git add src/utils/validation.js
git-suggest generate
# Output: "fix(validation): handle empty email input correctly"Example 3: Documentation
# You updated the README
git add README.md
git-suggest generate
# Output: "docs: update installation instructions"🛠️ Development
Building from Source
# Clone the repository
git clone https://github.com/techuila/git-suggest.git
cd git-suggest
# Install dependencies
npm install
# Build the project
npm run build
# Link for local development
npm linkRunning Tests
npm testLinting
npm run lint🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
Development Setup
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Commit your changes (
git-suggest generate😉) - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- GitHub Copilot for the AI-powered suggestions
- Conventional Commits for the commit message format
- Commander.js for the CLI framework
📞 Support
🔗 Related Projects
- commitizen - Command line utility to format commit messages
- conventional-changelog - Generate changelogs from conventional commits
- husky - Git hooks made easy
Made with ❤️ by developers, for developers. Happy committing! 🎉
