gitsquash
An interactive CLI tool that makes git commit squashing simple and intuitive. Select multiple commits using an interactive interface, provide a new commit message, and squash them into a single commit.
Features
- 🔍 Interactive commit selection with checkboxes
- 📝 Preview commit details (hash, date, message)
- ⚡️ Simple keyboard-based navigation
- 🔄 Automatic stashing of uncommitted changes
- 🚀 Dry-run mode to preview changes
- 💬 Optional preset commit messages
Installation
# Install globally npm install -g gitsquash # Or run directly with npx npx gitsquash
Usage
# Basic interactive mode - shows last 10 commits gitsquash # Show only last 5 commits gitsquash -n 5 # Squash with a preset commit message (skips the message prompt) gitsquash -m "feat: combine recent changes" # Preview what would happen without making changes gitsquash --dry-run
Options
| Option | Description |
|---|---|
-n, --number <count> |
Number of recent commits to show (default: 10) |
-m, --message <message> |
Preset commit message (skips the message prompt) |
--dry-run |
Preview squash operation without making changes |
--help |
Display help information |
--version |
Display version number |
How It Works
- Shows you a list of recent commits
- Use space bar to select commits you want to squash
- Press enter to confirm selection
- Enter a new commit message (or use preset with
-m) - The selected commits will be squashed into a single commit
Notes
- Requires git to be installed and available in PATH
- Works on any git repository
- Automatically handles uncommitted changes by stashing them
- Minimum of 2 commits required for squashing
License
MIT
