Professional Git Commit Message CLI Tool
Make your commit messages beautiful, consistent, and meaningful with emoji support and smart automation.
- Emoji-prefixed commit messages for visual clarity
- Consistent formatting across your entire project
- Support for Conventional Commits and Gitmoji standards
- Branch-based suggestions: Automatically suggests emojis based on branch names (
feature/β β¨,fix/β π) - Interactive mode: Step-by-step guided commit creation with
pummit interactive - Scope support: Conventional Commits scope input assistance
- Template system: Predefined commit message templates
- Flexible alias system with multiple shortcuts
- TOML-based configuration for better readability
- CLI-based configuration management (no editor required)
- Automatic migration from JSON to TOML
- English and Japanese UI
- Configurable language settings
- Community translation support
- Offline mode for air-gapped environments
- Comprehensive error handling and diagnostics
- Cross-platform compatibility (Windows, macOS, Linux)
- Security-focused design with SBOM generation
go install github.com/HidemaruOwO/pummit@latestbrew tap hidemaruowo/tap
brew update
brew install pummitDownload the latest binary from Releases:
# Download and extract
tar xzvf pummit_*.tar.gz
sudo mv pummit /usr/local/bin/pummitgit clone https://github.com/HidemaruOwO/pummit.git
cd pummit
go build -o pummit .# Simple commit with emoji alias
pummit sparkles "Add user authentication feature"
# Output: β¨ Add user authentication feature (src/auth.go, tests/auth_test.go)
# Interactive mode for guided commit creation
pummit interactive
# Branch-based auto-suggestion
git checkout feature/user-profile
pummit "Add user profile page"
# Auto-suggests: β¨ sparkles (new feature)# Using emoji alias
pummit sparkles "Add new feature"
pummit bug "Fix authentication issue"
# Using emoji directly
pummit β¨ "Add new feature"
# With scope (Conventional Commits)
pummit sparkles "Add login page" --scope auth# Launch interactive commit creation
pummit interactive
# Start with specific mode
pummit interactive --mode emoji # Start with emoji selection
pummit interactive --mode template # Start with template selection
pummit interactive --mode scope # Start with scope input# Open configuration in default editor
pummit config
# Get/set configuration values
pummit config --get base.emoji
pummit config --set base.emoji=true
pummit config --set locale.language=ja
# List all configuration
pummit config --list
# Reset configuration
pummit config --reset
pummit config --reset base # Reset specific section
# Backup and restore
pummit config --backup ~/my-pummit-config.toml
pummit config --restore ~/my-pummit-config.toml# Migrate from JSON to TOML configuration
pummit migrate
pummit migrate --dry-run # Preview changes only
# System diagnostics
pummit doctor
# Offline mode (no network access required)
pummit --offline sparkles "Add feature"| Alias | Emoji | Description | Use Case |
|---|---|---|---|
s, feat, feature |
β¨ | sparkles | New features |
b, fix, error |
π | bug | Bug fixes |
d, doc, docs |
π | books | Documentation |
a, ui, design |
π¨ | art | UI/UX improvements |
c, wip |
π§ | construction | Work in progress |
t, new, init |
π | tada | Initial commit |
r, pr, merge |
β»οΈ | recycle | Refactoring |
l, test |
π¨ | rotating_light | Testing |
w, tool, config |
π§ | wrench | Configuration |
h, perf |
π | horse | Performance |
Pummit uses TOML configuration for better readability:
[meta]
version = "3.0.0"
[base]
emoji = true
filesLength = 50 # 0 = disabled, -1 = unlimited
[interactive]
enabled = true
defaultMode = "emoji" # "emoji", "template", "scope", "branch"
showPreview = true
fuzzySearch = true
[locale]
language = "en" # "en", "ja"
autoDetect = true
[templates]
enabled = true
defaultTemplate = "default"
[scope]
enabled = true
autoDetect = true
suggestions = ["api", "ui", "core", "auth", "db"]
[branchMapping]
enabled = true
fallback = "construction"
[[branchMapping.rules]]
pattern = "^feature/.*"
emoji = "sparkles"
description = "New feature branch"
[[branchMapping.rules]]
pattern = "^(fix|bugfix|hotfix)/.*"
emoji = "bug"
description = "Bug fix branch"Create custom commit message templates:
[templates.definitions.feat]
format = "{emoji} {scope}: {message}\n\n{description}\n\n({files})"
description = "Feature development template"
defaultEmoji = "sparkles"
scope = true
requireDescription = true
[templates.definitions.fix]
format = "{emoji} {scope}: {message}\n\nFixes: {issue}\n\n({files})"
description = "Bug fix template"
defaultEmoji = "bug"
scope = true
fields = ["issue"]Automatic emoji suggestion based on branch names:
[[branchMapping.rules]]
pattern = "^feature/.*"
emoji = "sparkles"
description = "New feature branch"
[[branchMapping.rules]]
pattern = "^docs/.*"
emoji = "books"
description = "Documentation branch"
[[branchMapping.rules]]
pattern = "^refactor/.*"
emoji = "eyes"
description = "Refactoring branch"Set up pre-commit hooks for automatic pummit usage:
# .git/hooks/prepare-commit-msg
#!/bin/sh
# Auto-launch pummit for interactive commits
if [ -z "$2" ]; then
exec pummit interactive
fi| OS | Version | Terminal | Status |
|---|---|---|---|
| macOS | 10.15+ | Terminal.app, iTerm2, wezterm | β Fully Supported |
| Linux | Ubuntu 20.04+, RHEL 8+ | gnome-terminal, xterm, wezterm | β Fully Supported |
| Windows | Windows 10+ | PowerShell, CMD, Windows Terminal, wezterm | β Supported |
- Go 1.20 or later
- Git 2.20 or later
git clone https://github.com/HidemaruOwO/pummit.git
cd pummit
go build -o pummit .# Run all tests
go test ./...
# Run tests with race detection
go test -race ./...
# Run benchmarks
go test -bench=. ./...
# Generate coverage report
go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.outpummit/
βββ main.go # Application entry point
βββ internal/ # Private application code
β βββ cli/ # CLI commands
β βββ config/ # Configuration management
β βββ git/ # Git operations
β βββ alias/ # Alias management
β βββ interactive/ # Interactive mode
β βββ telemetry/ # Observability (opt-in)
βββ pkg/ # Public packages
β βββ gitmoji/ # Gitmoji API integration
β βββ logger/ # Logging utilities
βββ docs/ # Documentation
β βββ architecture.md # Architecture specification
β βββ assets/ # Images and assets
βββ tests/ # Test files
βββ unit/ # Unit tests
βββ integration/ # Integration tests
βββ e2e/ # End-to-end tests
# Check Go version
go version
# Verify GOPATH/GOBIN
echo $GOPATH
echo $GOBIN
# Re-install with verbose output
go install -v github.com/HidemaruOwO/pummit@latest# Run diagnostics
pummit doctor
# Check configuration status
pummit config --status
# Reset to default configuration
pummit config --reset# Verify Git installation
git --version
# Check repository status
git status
# Validate pummit in repository
cd /path/to/your/repo
pummit doctor- π Documentation: Check our docs directory
- π Bug Reports: Open an issue on GitHub Issues
- π¬ Questions: Start a discussion on GitHub Discussions
By contributing to this project, you agree to the following terms:
- You grant a license: You grant the project owner a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license to use, modify, distribute, and sublicense your contributions under the Apache License 2.0.
- You retain ownership: You still own the copyright of your contribution, but you waive any claims against the project related to your contribution.
- No additional patent rights: You do not grant additional patent rights beyond what is covered by Apache 2.0.
- Your contributions are original: You confirm that your contributions do not violate any third-party rights.
By submitting a pull request, you agree to these terms.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Add tests for your changes
- Ensure all tests pass (
go test ./...) - Commit your changes using pummit (
pummit sparkles "Add amazing feature") - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is dual-licensed. You may choose to use it under either:
- Apache License 2.0 - A permissive license suitable for commercial use
- SUSHI-WARE License - If this software is useful to you, please invite the author to sushi π£
- Gitmoji for emoji standardization
- Conventional Commits for commit message conventions
- Cobra for CLI framework
- Bubble Tea for TUI framework
- All contributors who helped make pummit better
Made with β€οΈ by HidemaruOwO
If pummit helps improve your Git workflow, please β this repository!

