Work you forgot to commit
A fix from last Tuesday, still sitting uncommitted in a repository you haven't opened since.
01Grove finds every git repository on your machine and shows, in one live list, what is uncommitted, what needs pushing or pulling, which pull requests are waiting, and which branches are merged or stale. Then it pulls, pushes and cleans up all of them at once, safely.
Twenty repositories, one you
Real work spans many: services, libraries, the app, the docs, the side project. Grove is for knowing where all of them stand, without opening each one.
A fix from last Tuesday, still sitting uncommitted in a repository you haven't opened since.
01Commits that never left your laptop, and a teammate's changes you are about to conflict with.
02Dozens of merged and abandoned branches per repository, and squash merges mean git can't tell which are safe.
03cd, git status, git fetch, git branch, repeated for every repository, every morning.
04One dashboard for all of them
See every repository's state, act on many at once, and dig into any one of them.
At a glance
Each row answers the questions you would otherwise ask git one repository at a time. Expand it for the detail: open pull requests with their CI and review status, every branch and what has happened to it.
Branch cleanup
Grove checks each branch against the default branch, including squash and rebase merges that git branch --merged misses, and lists only the ones whose changes are already there.
Always current
Commit in your terminal, switch branches in your IDE, pull somewhere else: the row changes within a second. Grove also fetches in the background, so "to pull" is true when you look.
History & worktrees
See what landed on a branch, which stashes you forgot about, and every worktree a repository has. Then jump straight to your editor or a terminal in that folder.
Git configuration
Every setting that affects a repository, from the repository itself, your user and the system, with what overrides what. Edit the repository's and your own; the rest is shown read-only.
New machine
Export a list of your repositories and where they live, then clone them all from it on the next machine. Or clone every repository of a GitHub user or organization in one go.
Safe by default
Acting on twenty repositories at once is only useful if nothing surprising happens in any of them. Every action in Grove is the conservative one.
Grove never merges or rebases for you. A branch that has diverged is reported, and left alone.
Only branches that are ahead and not behind are pushed, and a branch without an upstream is never published for you.
A branch is deleted only if its changes are in the default branch right now, and Undo restores it.
Grove uses your own git, credentials and hooks, and a repository that needs a login reports it instead of hanging.
For terminals and servers
The grove command does what the dashboard does: a status table of every repository, bulk fetch, pull and push, cleanup with a dry run first, and a portable list to clone from on another machine.
# Where does everything stand?
$ grove status ~/code --attention
# Start the day up to date
$ grove pull ~/code
# See what's safe to delete, then delete it
$ grove cleanup ~/code
$ grove cleanup ~/code --yes
# New laptop
$ grove export ~/code > repos.json
$ grove clone repos.json ~/code
Everything else you'd expect
Pin the repositories you live in, tag them by team or client, and hide the ones you only keep for reference.
One click shows just what is uncommitted, to push, to pull, merged or stale.
Five git calls per repository and results as they arrive, so a big folder of projects stays quick.
Windows, macOS (Apple silicon and Intel) and Linux. Your own git, found even from the Dock or a launcher.
Themes that follow your system.
Refresh, search and select all from the keyboard.
Everything the dashboard does, in scripts and on servers.
Nothing to sign up for. Point it at a folder and go.
Private by design
Grove vs doing it by hand
| Task | By hand | Grove |
|---|---|---|
| See every repository's state | cd and git status, one by one | One live list |
| Know what's waiting to be pulled | Remember to fetch each one | Fetched in the background, with a notification |
| Pull or push many repositories | A shell loop, and hope | One click, fast-forward only, never forced |
| Find branches safe to delete | git branch --merged misses squash merges | Merged, squash- and rebase-merged, all recognised |
| Delete them | git branch -D, carefully | Protected branches skipped; undo if you need it |
| Pull requests and CI | Open the browser per repository | Next to the branch they belong to |
| Per-repository git settings | git config --show-origin, then edit by hand | Shown by source, edited in place |
| A new machine | Clone one at a time from memory | Export a list, clone them all |
Get Grove 0.1.0
Pick the file for your system. We'll email you a one-time code, and the download starts as soon as you enter it.
Windows 10 and 11, 64-bit
macOS 11 Big Sur or later
64-bit (x86_64)
grove status, pull, push, cleanup. No window
First launch & command line
If Windows shows "Windows protected your PC", choose More info, then Run anyway. On Windows 10, the installer adds Microsoft's WebView2 if it's missing.
Drag Grove into Applications. The first time, open System Settings, then Privacy & Security, and click Open Anyway. (On macOS 14 and earlier, right-click the app and choose Open.)
Install the .deb with apt or the .rpm with dnf, like any other package. The AppImage needs no install: make it executable (chmod +x) and run it.
Unpack the archive and put grove on your PATH. It needs git, like the app.
The first-launch warning appears because Grove is new and not yet widely downloaded; it only shows once. Verify your download (optional): each file's SHA-256 checksum is in SHA256SUMS.txt.
FAQ
Something else? Ideas or partnership enquiries? Email jamal@unravelers.tech.
Just git. Grove uses the git you already have, with your settings and credentials. Pull requests and cloning from GitHub also use the GitHub CLI (gh) if you install it.
Pulls only fast-forward, pushes never force, and branches are deleted only when their changes are already in the default branch. The current, default and long-lived branches are never deleted, and a cleanup can be undone.
It compares the branch's changes with the commits on the default branch. If the whole branch landed as one squashed commit, or every commit was copied over by a rebase merge, the branch is marked squash-merged. When it isn't sure, the branch stays in the unmerged list.
Yes. Git uses your own credentials, and pull requests come through the GitHub CLI and the account you signed in with.
Hundreds. Each repository takes five quick git calls, results appear as they arrive, and a folder search skips heavy folders like node_modules.
Yes: grove status, fetch, pull, push, cleanup, export and clone, for scripts and servers.
Both systems double-check apps that aren't yet widely downloaded. It only happens on the first launch; the steps are in the download section above.
Windows 10 and 11 (64-bit), macOS 11 or later on Apple silicon and Intel, and 64-bit Linux (Ubuntu, Debian, Fedora, openSUSE and others).
Every repository, one view
Get Grove for Windows, macOS or Linux, or tell us what it should do next.