A fast, beautiful desktop app for reading your git repositories. Open any repo to browse your working changes and full commit history, and read syntax‑highlighted diffs — split or unified, light or dark.
GitGrove is a viewer: it stays out of your way while you write commits in your editor or terminal, and gives you a clear, calm window onto what changed.
Download the latest version for your platform from the Releases page:
- macOS —
.dmg(Intel / Apple Silicon) - Windows —
.exeinstaller (x64 / arm64) - Linux —
.AppImage
GitGrove updates itself: it checks quietly on launch and offers a one‑click restart when a new version is ready. You can also check any time from Help ▸ Check for Updates…
You'll need
gitinstalled. GitGrove reads repositories through thegitcommand line. If it isn't found, the app walks you through installing it (and will happily use the copy bundled with GitHub Desktop).
- Open any repository from the folder picker, and jump back into recent ones from the welcome screen.
- Right‑click a repository — the toolbar switcher or any recent — to copy its name or path, reveal it in Finder/Explorer, open a terminal there, or jump to its remote on GitHub. The same actions live in the Repository menu for the open repo.
- Switch branches — local or remote — straight from the toolbar; GitGrove checks them out in place.
- Browse your changes in the Changes tab: a status‑colored file tree (added, modified, deleted, renamed, untracked) with a diff for every file.
- Explore history in the History tab: the commit log with refs and tags. Pick a commit to see exactly what it changed, then click a file for its diff.
- Read diffs that are a pleasure to read — word‑level intra‑line highlighting, Split or Unified layout, line‑wrap toggle, and expandable context.
- Stay in sync automatically — GitGrove watches the repo and refreshes as you commit, checkout, or edit, without disrupting the diff you're reading.
It never writes to your repository beyond checking out branches — no staging, no commits, no surprises.
GitGrove is an Electron + React
app. The renderer never touches git directly: it talks to the main process through a
typed, sandboxed bridge (contextIsolation on, nodeIntegration off), and all git
work happens in the main process via simple-git
and raw git for precise patch output. The file tree and diffs are rendered with
@pierre/trees and @pierre/diffs.
You'll need Bun and git on your PATH.
bun install # install dependencies
bun run dev # launch the app with hot reload
bun run typecheck # type-check the whole project
bun test # run the test suite
bun run lint # lint + format check (Biome) — same command CI runs
bun run lint:fix # auto-fix lint + formattingCI runs lint, typecheck, tests and a per‑platform build on every PR (macOS, Windows, Linux), plus an end‑to‑end smoke test and a CodeQL scan — so green locally means green in CI.
Releases are one button: Actions ▸ Release ▸ Run workflow, pick the bump level. The workflow bumps the version, tags it, builds installers on every OS, and opens a draft GitHub Release with generated notes. Review the notes (they show verbatim in the in‑app update banner) and click Publish.
GitGrove's own source is MIT. It bundles open‑source dependencies under their own permissive licenses; their notices ship inside every distributable.
