🍀 Swiggit - Multi-Organization Git Manager
Manage Git operations across multiple organizations with per-project SSH keys and identity management - right in VS Code!
Perfect for freelancers, contractors, and developers juggling multiple GitHub accounts (personal, work, clients).
✨ Features
🔐 Per-Project Git Identity
- Configure unique Git user name, email, and SSH keys for each project
- No more accidental commits with the wrong identity
- See your current identity in the status bar
🏢 Multi-Organization Support
- Seamlessly work with personal accounts, work accounts, and client accounts
- Project-specific
.swiggit.json configuration files
- SSH key isolation with
IdentitiesOnly
🚀 Streamlined Git Workflow
- Quick Commit & Push - Stage, commit, and push in one command
- Smart Operations - Auto-setup remotes and upstream tracking
- Safety Features - Confirmation prompts prevent accidents
- Visual Feedback - See identity and operations in status bar
💻 Integrated Commands
All your favorite Git operations with proper identity management:
Swiggit: Initialize Config - Create .swiggit.json for your project
Swiggit: Show Identity - Display current Git identity
Swiggit: Edit Config - Quick access to configuration
Swiggit: Git Status - Check repository status
Swiggit: Stage All Changes - Add all files
Swiggit: Commit - Commit with message
Swiggit: Push - Push to remote
Swiggit: Pull - Pull from remote
Swiggit: Quick Commit & Push - Do it all at once! 🚀
📦 Installation
From VS Code Marketplace
- Open VS Code
- Go to Extensions (Cmd+Shift+X)
- Search for "Swiggit"
- Click Install
From VSIX File
- Download the
.vsix file
- Open VS Code
- Extensions → "..." menu → Install from VSIX
Prerequisites
- Swiggit CLI must be installed
- Install via:
curl -fsSL https://raw.githubusercontent.com/uptime-org/swiggit/main/install.sh | bash
🚀 Quick Start
1. Initialize Configuration
Open your project in VS Code, then:
- Press
Cmd+Shift+P (Mac) or Ctrl+Shift+P (Windows/Linux)
- Type:
Swiggit: Initialize Config
- This creates
.swiggit.json in your project root
The extension will automatically open .swiggit.json. Update it with your details:
{
"organizations": {
"personal": {
"name": "personal",
"description": "Personal GitHub Account",
"git_user_name": "John Doe",
"git_user_email": "john@example.com",
"ssh_key_path": "~/.ssh/id_rsa",
"github_username": "johndoe",
"github_token": "ghp_xxxxxxxxxxxxxxxxxxxx",
"expected_user": "johndoe"
}
}
}
3. Check Your Identity
- Look at the status bar (bottom left) - you'll see
👤 johndoe
- Click it or run
Swiggit: Show Identity to see full details
4. Use Git with Proper Identity
Now all Git operations use your configured identity:
Swiggit: Quick Commit & Push - Fast workflow! 🚀
- Or use individual commands: Stage → Commit → Push
📖 Usage Examples
Scenario 1: Freelancer with Multiple Clients
Project A (Client ABC)
{
"organizations": {
"personal": {
"git_user_name": "John Doe",
"git_user_email": "john@clientabc.com",
"ssh_key_path": "./.ssh/client_abc_key",
"github_username": "clientabc"
}
}
}
Project B (Client XYZ)
{
"organizations": {
"personal": {
"git_user_name": "John Doe",
"git_user_email": "john@clientxyz.com",
"ssh_key_path": "./.ssh/client_xyz_key",
"github_username": "clientxyz"
}
}
}
Each project commits with the correct identity automatically!
Scenario 2: Quick Commit Workflow
- Make your code changes
- Press
Cmd+Shift+P
- Type "Swiggit: Quick Commit"
- Enter commit message: "feat: add new feature"
- Choose whether to push
- Done! 🎉
Scenario 3: Multiple Organizations
Add more organizations to your config:
{
"organizations": {
"personal": {
"git_user_name": "John Doe",
"git_user_email": "john@personal.com",
"github_username": "johndoe"
},
"work": {
"git_user_name": "John Doe",
"git_user_email": "john.doe@company.com",
"github_username": "johndoe-company"
},
"client": {
"git_user_name": "John Doe",
"git_user_email": "john@client.com",
"github_username": "client-org"
}
}
}
⚙️ Configuration
Extension Settings
Access via Settings → Extensions → Swiggit:
swiggit.autoShowIdentity - Show identity in status bar (default: true)
swiggit.confirmPush - Ask before pushing (default: true)
swiggit.defaultOrganization - Default org to use (default: personal)
Project Configuration
The .swiggit.json file supports:
{
"default": {
"org": "personal",
"branch": "main",
"visibility": "private"
},
"ssh": {
"options": "-o IdentitiesOnly=yes",
"key_path": "./.ssh/id_rsa"
},
"organizations": {
"personal": { /* ... */ }
},
"cli": {
"auto_push": true,
"auto_set_upstream": true
}
}
🔑 GitHub Token Setup
To use repository creation features:
- Go to: https://github.com/settings/tokens
- Click "Generate new token (classic)"
- Select scope:
repo (full control of private repositories)
- Copy token
- Add to
.swiggit.json under github_token
⚠️ Never commit your token! Add .swiggit.json to .gitignore
🎨 Status Bar
The status bar shows:
👤 username - Your current GitHub username
- Click to view full identity details
- Tooltip shows: Name, email, SSH key
🔒 Security
- Each project has its own isolated configuration
- SSH keys use
IdentitiesOnly to prevent key leakage
- GitHub tokens stored per-project (not globally)
.swiggit.json should be in .gitignore
🐛 Troubleshooting
"swiggit: command not found"
Install the Swiggit CLI:
curl -fsSL https://raw.githubusercontent.com/uptime-org/swiggit/main/install.sh | bash
Identity not showing in status bar
- Ensure
.swiggit.json exists in project root
- Check the JSON is valid
- Reload VS Code window
Push/Pull fails
- Verify SSH key path is correct
- Test SSH:
ssh -T git@github.com
- Ensure GitHub token has correct permissions
📝 Requirements
- VS Code 1.85.0 or higher
- Swiggit CLI installed
- Git installed
- macOS, Linux, or Windows with WSL
🤝 Contributing
Found a bug or have a feature request?
📄 License
MIT License - See LICENSE file for details.
For commercial use of Swiggit CLI, contact: uptime.llc.ops@gmail.com
🌟 Why Swiggit?
Problem: You're a freelancer working with 5 different clients. Each has their own GitHub organization. You accidentally commit to Client A's repo with Client B's email. 😱
Solution: Swiggit! Each project gets its own identity. Never worry about the wrong commits again.
💰 Support Development
Like Swiggit? Consider:
- ⭐ Star the repo
- 🐛 Report bugs
- 💡 Suggest features
- ☕ Buy us a coffee: [sponsor link]
Made with 🍀 by Purfect Labs
Secure, multi-organization Git workflows made simple.