Switch between git users effortlessly!
GUM is a command-line tool that makes switching between different git users quick and intuitive. Perfect for developers who work with multiple git accounts (work, personal, clients) on the same machine.
- π Interactive User Switching - Visual menu for quick switching
- π§ Email-based Indexing - Support multiple users with same name
- π Local & Global Switching - Repository-specific or system-wide
- β Easy User Management - Add, delete, list users effortlessly
- π¨ Beautiful UI - Colorful terminal interface with emojis
- β‘ Fast & Lightweight - No dependencies on external services
- π§ Simple Configuration - Stored in
~/.config/gum/config.json
- Python 3.7+
- Git
# Clone the repository
git clone https://github.com/enescanguven/gum.git
cd gum
# Install dependencies
pip install -e .
# Or install dependencies manually
pip install pick termcolor pyfiglet# First run - add your first user
gum
# Switch between users interactively
gum
# Add more users via config menu
gum config| Command | Description |
|---|---|
gum |
Interactive user switcher |
gum config |
Configuration menu |
gum --help |
Show help information |
| Command | Description |
|---|---|
gum save <user> <email> |
Save a new user |
gum delete <email> |
Delete a user by email |
gum list |
List all saved users |
gum <user> |
Switch to user (by name or email) |
gum --global <user> |
Switch to user globally |
# Save users
gum save john john@work.com
gum save john john@personal.com
# Switch locally (current repo only)
gum john@work.com
# Switch globally (all repos)
gum --global john@personal.com
# Interactive switching
gum
# β Select from menu with arrow keys
# List all users
gum list
# john (john@work.com)
# john (john@personal.com)
# Delete user
gum delete john@work.comSelect user to switch to:
β π john (john@work.com)
π john (john@personal.com)
β Add new user
Select configuration option:
β β Save new user
π Switch globally
π List all users
ποΈ Delete user
GUM stores its configuration in ~/.config/gum/config.json:
{
"users": {
"john@work.com": {
"username": "john"
},
"john@personal.com": {
"username": "john"
},
"alice@company.com": {
"username": "alice"
}
}
}- Unique identification: Email addresses are naturally unique
- Multiple accounts: Same name, different emails (work vs personal)
- Flexibility: Search by username or email
- Real-world usage: Matches how git actually works
| Type | Scope | Command | Use Case |
|---|---|---|---|
| Local | Current repository only | gum <user> |
Project-specific identity |
| Global | All repositories | gum --global <user> |
System-wide default |
- Search by username or email
- Fuzzy matching for convenience
- Clear disambiguation when multiple matches
- Colorful terminal output
- Emoji icons for actions
- Progress indicators
- Error handling with helpful messages
- Uses native
git configcommands - No modification to existing repos
- Works with any git hosting service
# Clone and setup
git clone https://github.com/enescanguven/gum.git
cd gum
# Install in development mode
pip install -e .
# Run tests
python -m pytest# Install VHS
go install github.com/charmbracelet/vhs@latest
# Generate demo
vhs demo.tape
# Generate help
vhs help.tapeContributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- charmbracelet/vhs - For creating awesome terminal demos
- wong2/pick - For the interactive menu library
- termcolor - For colorful terminal output
- Author: Enes Can Guven
- Website: enescanguven.com
- GitHub: @enescanguven

