![]()
Manage multiple Git repositories in VSCode with one-click batch operations — pull, push, commit, branch switch, and fetch across all repos simultaneously.
Why This Extension?
If you work with a multi-repo workspace — like a monorepo split across several packages, or multiple microservices — you know the pain:
- Switching branches means running
git checkoutin 5 different folders - Each
git pullis its own terminal tab - Committing changes across repos is repetitive and error-prone
Multi-Repo Manager solves that. Open a multi-root workspace in VSCode, and it automatically detects every Git repo inside. Then batch-operate on all of them with a single command.
Features
🎯 Core Operations
| Feature | What it does |
|---|---|
| Switch Branch | Pick from local & remote branches (sorted by last activity) — ALL repos check it out at once |
| Batch Commit | Type one message — applied to every repo with uncommitted changes. Optionally stage all changes (git add -A) first |
| Pull All | git pull across every repo simultaneously (5 at a time), reporting only repos that actually received updates |
| Push All | git push across every repo (with confirmation dialog), reporting only repos that actually pushed new commits |
| Fetch All | git fetch --all to update remote refs without merging, reporting only repos whose remote refs actually changed |
📊 Visibility
- Status bar shows
Repos: N (M changed)with ahead/behind counts (↑N ↓N) per repo on hover - Sidebar view lists each repo, its current branch, ahead/behind, and clean/dirty state
- Output channel (
View → Output → Multi-Repo Manager) logs every git command as it runs — no black box
🔧 Smart Detection
- Auto-detects Git repos in multi-root workspaces
- Supports nested repos inside parent folders
- Re-scans automatically when workspace folders change
Requirements
- VSCode 1.85.0 or higher
- Git must be installed and accessible from PATH
Installation
Option 1 — VSCode Marketplace
Search for "Multi-Repo Manager" in the Extensions panel and install, or install directly from the Marketplace page.
Option 2 — Manual Install
Download the .vsix file from the Releases page, then:
- In VSCode, press
Ctrl+Shift+P/Cmd+Shift+P - Type
Extensions: Install from VSIX - Select the downloaded
.vsixfile
Usage
Getting Started
- Open VSCode with a workspace containing multiple Git repositories
- You can use multi-root workspace:
File → Open Folder→ add multiple folders - Or open a parent folder that contains nested Git repos
- You can use multi-root workspace:
- The status bar shows
Repos: Nonce repos are detected - Press
Ctrl+Shift+P/Cmd+Shift+Pand search forMulti-Repo:commands
Available Commands
| Command | Description |
|---|---|
Multi-Repo: Switch Branch (All Repos) |
Pick a branch (local or remote) — all repos check it out |
Multi-Repo: Batch Commit |
Type a message — commits all repos with changes, with optional auto-stage |
Multi-Repo: Pull All |
Pull all repos (5 run concurrently, success count means repos with real updates) |
Multi-Repo: Push All |
Push all repos (asks for confirmation first, success count means repos with new commits pushed) |
Multi-Repo: Fetch All |
Fetch from all remotes (success count means repos whose remote refs changed) |
Multi-Repo: Show Repo Status |
Display detailed status for each repo |
Multi-Repo: Refresh Repos |
Re-scan workspace for repos |
When a batch operation has failures, the warning dialog offers a Show Log button to jump straight to the output channel.
Output Log
To see exactly what git commands are running:
View → Output- In the dropdown, select "Multi-Repo Manager"
Each command logs its execution with timestamps:
[RUN] 14:23:01 [my-app] git pull
[OK] 14:23:03 [my-app]
[RUN] 14:23:03 [shared-lib] git pull
[FAIL] 14:23:05 [shared-lib] error: Your local changes would be overwritten...
Troubleshooting
No repos detected
- Make sure each repo has a valid
.gitfolder - Try
Multi-Repo: Refresh Reposto re-scan - If using a multi-root workspace, add each repo folder individually via
File → Add Folder to Workspace
Push/Pull fails
- Check the Output log for the specific error message
- Common cause: uncommitted local changes conflicting with remote changes
- Use
git stashor commit changes before pulling
Permission denied
- Ensure Git is installed and accessible from terminal: run
git --versionin a terminal - On macOS, you may need to allow VSCode to access Git in System Preferences
Architecture
src/
├── extension.ts # Entry point, command registration, status bar, tree view
├── logger.ts # OutputChannel wrapper for logging
├── repoDetector.ts # Scans workspace for .git folders
├── gitRunner.ts # Executes git commands via child_process
├── utils.ts # Concurrent runner & completion/error UI helpers
└── commands/
├── switchBranch.ts # Batch branch switch (local + remote, sorted by activity)
├── batchCommit.ts # Batch commit with same message + optional auto-stage
├── batchPull.ts # Batch git pull
├── batchPush.ts # Batch git push (with confirmation)
├── batchFetch.ts # Batch git fetch
└── showStatus.ts # Detailed per-repo status report
Contributing
Issues and PRs are welcome! If you find a bug or want a new feature, open an issue.
License
MIT