grove

Your git shortcuts as one portable binary, plus an overview and sync for a whole folder of repos.

brew trust --tap jakobhviid/tapbrew install jakobhviid/tap/grove

Install Read the README

macOS and Linux, x86_64 and arm64 · zsh, bash and fish · MIT licensed

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