A web app that shows commit graphs of multiple local git repositories side
by side in a single-page app. Ships as a single binary with an embedded
SPA: branches, merges, tags, stashes, submodule correlation graphs and
squash-merge links, rendered locally with no telemetry.
Manage, inspect, and maintain multiple Git repositories from one place.
Gitreant combines “Git” with “Treant,” a mythical guardian of the forest. The name represents a tool that watches over, organizes, and maintains a forest of Git repositories.
Pronunciation: /ˈɡɪt.triːənt/ (git-ree-ant)
A web app that shows commit graphs of local git repositories side by side in a
single-page app. Inspired by k1LoW/mo, it ships
as a single Rust binary with an embedded React SPA.
$ gitreant # discover .git from the current directory
$ gitreant ../foo ../bar # show multiple repositories at once
Running gitreant again from another directory adds that repository to the
already-running server, so everything appears on the same page
(single-instance behavior, like mo).
The launcher detaches by default: the server keeps running in the background
and control returns to your shell. Stop it with gitreant --shutdown, or use
--foreground to keep the server attached to the terminal.
Features
Commit graphs of several local repositories on one page, in tabs and two
side-by-side panes
Commit details and diffs: the full message, signature state, changed
files, and inline or side-by-side diffs with intra-line highlights
Work in progress at a glance: uncommitted changes above HEAD, linked
worktrees, and line-ending-only changes named as such
Fetch, check out, merge, create branches, and create or delete tags from
the graph, each delegated to the git CLI
Pull request links through gh and signature verification through gpg,
both optional
One self-contained binary, a command palette, dark and light themes, and
an English or Japanese UI
$ make build # build the frontend and embed it into a release binary
$ ./target/release/gitreant
Options
gitreant [PATH...]
-p, --port port to listen on / connect to (default 4000)
--no-open do not open the browser automatically
--app open in a chromeless window instead of a tab (needs a
Chromium-based browser; falls back to the ordinary
browser without one, and --no-open outranks it)
--foreground run the server in the current terminal instead of detaching
--shutdown stop the running gitreant server and exit
gitreant doctor check the environment: git (required), gh and gpg
(optional feature enablers), and whether a server is
already running on the port; exits non-zero when a
required tool is missing
gitreant restart restart the running server, keeping the repositories it
shows; a fresh process re-verifies every signature and
picks up a rebuilt binary
gitreant refresh re-verify commit signatures in place, without restarting
(use after adding a key to your gpg keyring)
Unless you explicitly state otherwise, any contribution intentionally
submitted for inclusion in this work by you, as defined in the Apache-2.0
license, shall be dual licensed as above, without any additional terms or
conditions.