gitmate
A git operations client available as both a command-line tool and a desktop GUI,
sharing one Go engine underneath.
gitmate is a git-operations client (branches, commits, merges, PRs, releases, CI), not a
code editor. It wraps git and the GitHub API behind a single engine that both front-ends call,
so the CLI and GUI always behave identically.
Features
Local git
- Status, staging, commit, discard
- Branches (local and remote-tracking), switch/checkout, merge, rebase, rename, delete
- History log, commit detail, blame, reflog, reset
- Stash (save/list/pop/apply/drop)
- Merge / rebase / cherry-pick / revert with conflict resolution (take ours/theirs, mark resolved, commit merge)
- Tags (annotated, push, delete local/remote), remotes (add/rename/remove, clone)
GitHub (REST + GraphQL)
- Pull requests: list with review-decision + CI status rollup, create, review (approve / request-changes / comment),
inline + review-thread comments, resolve/unresolve threads, merge, close/reopen
- Issues: list with labels + assignees, create, label, close/reopen
- Labels: full CRUD
- Releases: full CRUD, asset upload/download, generate release notes
- GitHub Actions: workflows, runs (grouped, status-filtered), job logs (colorized), cancel/rerun/rerun-failed,
workflow_dispatch with inputs, and a run dependency flowchart (including matrix legs)
Reads that aggregate nested data (PR detail, PR list, issue list) use GraphQL; simple reads and
all writes use REST — mixed intentionally.
Install
Download a release
Grab the latest build from the Releases page:
- CLI:
gitmate (Linux/macOS) or gitmate.exe (Windows) — a single static binary
- GUI: the desktop app for your platform
Binaries are not code-signed. On first run your OS may warn you:
- Windows: "More info" → "Run anyway"
- macOS: right-click → Open (or clear the quarantine attribute)
- Verify the download against the release
checksums file if you prefer, or build from source (below).
Build from source
Requires Go 1.25+. The GUI additionally requires Wails v3 and,
on Linux, GTK4/WebKit dev packages.
# CLI
go build -o gitmate ./cmd/gitmate
# GUI (from gui/)
cd gui
wails3 build
Usage
Authentication
gitmate reads a GitHub token from the GITHUB_TOKEN environment variable (a .env file in the
repo is also honored). The token needs the repo scope; to cancel/rerun/dispatch Actions it also
needs the workflow scope.
CLI
Install the command-line tool with Go (requires Go 1.25+):
go install github.com/davasorus/gitmate/cmd/gitmate@latest
This installs gitmate into $(go env GOPATH)/bin — make sure that's on your PATH.
(Or download a release binary, or build from source — see docs/cli.md.)
gitmate whoami # verify GitHub auth
gitmate status
gitmate commit -m "message"
gitmate branch
gitmate log
# GitHub
gitmate prs
gitmate pr checks <number>
gitmate issues
gitmate release
gitmate actions # workflow runs
gitmate actions dispatch <workflow.yml> key=value
Run gitmate <command> --help for any command's flags. Full command reference:
docs/cli.md.
GUI
cd gui
wails3 dev # development
The desktop app presents the same operations as tabbed views: Changes, Branches, History,
Conflicts, Stashes, Reflog, Tags, Remotes, Pull Requests, Issues, Labels, Releases, and Actions.
It auto-refreshes on window focus and periodically fetches (with prune) so remote state stays current.
Architecture
One shared engine, two front-ends:
internal/gitops/ git via os/exec ┐
internal/ghapi/ GitHub REST + GraphQL ├─ shared engine
│
cmd/gitmate/ Cobra CLI ──────────────┤
gui/ Wails v3 desktop app ───┘ (React + Tailwind, calls a thin service layer)
The CLI and GUI never reimplement logic — they both call internal/gitops and internal/ghapi.
See ARCHITECTURE.md for the design decisions and CONTRIBUTING.md
for the development workflow.
License
MIT — see LICENSE.