GitSwap
🔒 Secure, repository-scoped Git account management for VS Code
Switch between multiple GitHub accounts without touching global Git config.
✨ Key Features
- 🔒 Repository-Scoped Switching - Uses
git config --local to prevent global config pollution
- 🔌 Connection Testing - Real-time SSH/HTTPS connection verification with status indicators
- 🎯 Activity Bar Integration - Quick access to all your Git accounts
- 📊 Beautiful Dashboard - Clean, card-based UI with live connection status
- ⚡ One-Click Switching - Switch between accounts instantly
- 🔐 Dual Auth Support - SSH (recommended) and HTTPS authentication (coming soon!)
- 📋 SSH Key Management - Generate and copy SSH commands and them to platform.
- 💾 Secure Storage - Encrypted credential storage via VS Code APIs
- 🚀 QuickPick Interface - Intuitive step-by-step account creation
🔒 Security Highlights
✅ No Global Config Pollution - All changes are repository-scoped
✅ Connection Verification - Test SSH/HTTPS before switching
✅ Encrypted Storage - Tokens stored securely
✅ Local-Only Operations - No external servers or data collection
✅ Audit Trail - View exactly what was configured
🚀 Getting Started
Installation
- Install GitSwap from the VS Code Marketplace
- Click the GitSwap icon (🔄) in the Activity Bar
- Click "Add Account" to create your first account
Adding an Account
- Click the "+" button in the GitSwap Activity Bar view or run
GitSwap: Add Account from the Command Palette
- Follow the QuickPick prompts:
- Account Label: Give your account a name (e.g., "Work", "Personal", "Company 1")
- Auth Type: Choose between SSH (recommended) or HTTPS
- Platform: Select GitHub or GitLab
- Username: Enter your Git username
- Email: Enter your Git email
- Token/SSH: Provide your personal access token (HTTPS) or generate SSH key (SSH)
Switching Accounts
Method 1: Dashboard
Switching Accounts (Safe & Secure)
Method 1: Dashboard
- Open the GitSwap Dashboard
- Test Connection first (🔌 Test button) to verify setup
- Click "🔄 Switch" button on the desired account card
- Changes are repository-scoped only (no global config pollution)
Method 2: Activity Bar
- Click on any account in the Activity Bar tree view
- Requires an open workspace folder
Method 3: Command Palette
- Run
GitSwap: Switch Account
- Select from the list of accounts
🔍 Verification:
After switching, check the local Git config:
git config --local user.name
git config --local user.email
Testing Connections
Why Test Connections?
- Verify SSH keys are properly configured
- Ensure HTTPS tokens are valid
- Confirm platform connectivity before committing
How to Test:
- Open the GitSwap Dashboard
- Each account card shows connection status:
- 🟢 Connected - Verified and working
- 🔴 Not Connected - Setup required
- 🟠 Testing - Test in progress
- ⚪ Unknown - Not yet tested
- Click "🔌 Test" to verify the connection
- View last tested timestamp on each card
Managing SSH Keys
For SSH-authenticated accounts:
- Open the GitSwap Dashboard
- Find your account card
- Click "📋 Copy SSH" to get the keygen command
- Run the command in your terminal
- Add the generated public key to GitHub/GitLab
- Test the connection with the "🔌 Test" button
📋 Commands
GitSwap: Open Dashboard - Open the main dashboard with connection status
GitSwap: Add Account - Add a new Git account via QuickPick
GitSwap: Switch Account - Switch to a different account (repository-scoped)
GitSwap: Delete Account - Remove an account
GitSwap: Refresh Accounts - Refresh the accounts list and connection status
🎨 Dashboard Features
The GitSwap Dashboard provides:
- Connection Status - Real-time SSH/HTTPS connection verification
- Account Cards - Each account displayed in a beautiful card format
- Active Status - Clearly see which account is currently active
- Test Button - Verify SSH/HTTPS connectivity
- Last Tested - Timestamp of last connection test
- Quick Actions - Switch, Test, Copy SSH, or Delete accounts with one click
- Account Details - View username, email, auth type, platform, and connection status
Each account stores:
- Label (custom name)
- Username
- Email
- Authentication type (SSH/HTTPS)
- Platform (GitHub)
- Credentials (encrypted token or SSH key)
- Active status
- Connection status (connected/not-connected/testing/unknown)
- Last tested timestamp
🛠️ Tech Stack
- TypeScript
- VS Code Extension API
- WebView API for Dashboard
- QuickPick API for account creation
📝 Use Cases
- Freelancers: Switch between client accounts effortlessly
- Developers: Separate personal and work Git identities
- Organizations: Manage multiple company accounts
- Open Source Contributors: Keep personal and OSS contributions organized
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
📄 License
MIT License - feel free to use this extension in your projects!
🐛 Issues & Feedback
Found a bug or have a feature request? Please open an issue on our GitHub repository.
Enjoy seamless Git account management with GitSwap! 🎉