What it does
Install once and the same commands work in every shell on every machine. The short names
you type are shell aliases, not binaries, so nothing short lands on your PATH and nothing collides
with other tools.
The everyday git verbs
gs ga gc gcp gp gpp for status, add, commit, commit-and-push, pull and push. Each one hands
straight over to git, so flags, colour, pager and exit codes are git's own.
A dashboard across repos
lg lists every repo in a folder with its branch, ahead and behind, and dirty counts, a
clickable name and a link to its forge page.
Sync in one step
lgs fast-forwards the repos that are behind and pushes the ones that are ahead, touching only
clean ones. lgp and lgpp pull or push all.
Made for scripts and agents
The data commands take --json and report what they could not touch, and
grove --llm prints the whole guide for an AI agent.
A first look
Repos sorted into subfolders such as work/ and private/ are
found two levels deep, and each one is shown with its folder.
$ lg ~/Developer
Repository Branch Status
───────────────── ────── ──────
scratch main ✓
private/dotfiles main ✓
private/notes main ✓ ?1
work/api main ↑1
work/web-frontend main ✓
5 repos · 3 clean · 1 dirty · 1 to push
Install
Homebrew, on macOS and Linux
Pours a prebuilt binary, so no compiler is needed. The tap is trusted once first, as Homebrew 6 and later ask.
brew trust --tap jakobhviid/tapbrew install jakobhviid/tap/grove
Or one line, without Homebrew
No compiler and no root: installs to ~/.local/bin. Suited to servers, containers and immutable
distros.
curl -fsSL https://raw.githubusercontent.com/jakobhviid/grove/main/install.sh | sh
Then add the short names to your shell, once
Writes the alias file and one line in your shell's startup file. Run it again at any time; it never adds a second line.
grove setup
Documentation
- README: every command, the aliases and the
--jsonoutput - WORKFLOWS.md: everyday workflows
- ARCHITECTURE.md: how it is built
- Releases