git-vmr
Install v0.8.0
git-vmr: multi-repo flexibility with monorepo ergonomics
This project follows the ai-disclosure convention: see AI_DISCLOSURE.md.
git-vmr is a Git CLI wrapper for interacting with multiple repositories as a single unified workspace, combining the flexibility of independent repositories with the ergonomics of a monorepo.
Install
On macOS and Linux:
curl https://eugencowie.github.io/git-vmr/install.sh | sh
On Windows in PowerShell:
irm https://eugencowie.github.io/git-vmr/install.ps1 | iex
Commands
These are common git-vmr commands used in various situations:
Start a working area
| Command | Description | Supported? |
|---|---|---|
| clone | Clone a repository into a new directory | ✅ |
| init | Create an empty virtual monorepo or reinitialize an existing one | ✅ |
Work on the current change
| Command | Description | Supported? |
|---|---|---|
| add | Add file contents to the index | ✅ |
| mv | Move or rename a file, a directory, or a symlink | ✅ |
| restore | Restore working tree files | ✅ |
| rm | Remove files from the working tree and from the index | ✅ |
Examine the history and state
| Command | Description | Supported? |
|---|---|---|
| bisect | Use binary search to find the commit that introduced a bug | ❌ |
| diff | Show changes between commits, commit and working tree, etc | ❌ |
| grep | Print lines matching a pattern | ❌ |
| log | Show commit logs | ❌ |
| show | Show various types of objects | ❌ |
| status | Show the working tree status | ✅ |
Grow, mark and tweak your common history
| Command | Description | Supported? |
|---|---|---|
| backfill | Download missing objects in a partial clone | ❌ |
| branch | List, create, or delete branches | ✅ |
| commit | Record changes to the repository | ✅ |
| merge | Join two or more development histories together | ✅ |
| rebase | Reapply commits on top of another base tip | ✅ |
| reset | Set HEAD or the index to a known state |
✅ |
| switch | Switch branches | ✅ |
| tag | Create, list, delete or verify tags | ✅ |
Collaborate
| Command | Description | Supported? |
|---|---|---|
| fetch | Download objects and refs from another repository | ✅ |
| pull | Fetch from and integrate with another repository or a local branch | ✅ |
| push | Update remote refs along with associated objects | ✅ |
Unique commands
| Command | Description | Supported? |
|---|---|---|
| foreach | Evaluates an arbitrary shell command in each checked out repository | ✅ |
docs/git-vmr.md lists available subcommands. See docs/git-vmr/<command>.md to read about a specific subcommand or concept.
License
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, see https://www.gnu.org/licenses/.