Skip to main content

ggit

An interactive TUI to scan directories for git repositories and get a quick overview of their status.

Install

Homebrew

brew install denrou/ggit/ggit

pip / uv

uv tool install ggit

Usage

Launch the TUI scanning the current directory:

ggit

Scan a specific directory:

ggit ~/code

The TUI displays a table of all discovered repositories with their branch, status, origin, PR counts, and last commit date. Use the keyboard to navigate, sort, filter, and view details.

JSON mode (non-interactive)

Print a machine-readable report to stdout instead of launching the TUI — handy for scripts, cron jobs, or LLM agents:

ggit --json ~/code
ggit --json --dirty          # only repos that need attention
ggit --json --no-prs         # skip GitHub PR lookups (faster, offline)

The report includes, per repository:

  • working-tree state (modified/staged/untracked counts, git status --short lines)
  • ahead/behind counts against the tracking branch
  • stashes (index, date, message)
  • local branches, flagged when merged into the default branch or when their upstream is gone
  • remote branches already merged into the default branch
  • worktrees (path, branch, dirty, prunable)
  • origin, detected default branch, and open PR counts (via the gh CLI)

--dirty keeps only repositories with something to clean up: a dirty working tree, stashes, merged or gone branches, or stale worktrees.

Configuration

ggit reads an optional config file from ~/.config/ggit/config.toml (or $XDG_CONFIG_HOME/ggit/config.toml):

# Directories scanned when no path argument is given (default: current directory)
paths = ["~/code"]

# Look up open PR counts via the gh CLI (default: true)
github_prs = true

With paths set, running ggit (or ggit --json) from anywhere scans your usual code directories. Command-line paths always take precedence, and --config FILE points at an alternative file.

Keybindings

Key Action
j / k Move cursor down / up
Enter Show detailed info for selected repo
Space Toggle select current row
x Toggle select all visible rows
f Fetch selected repos (or cursor row)
p Prune selected repos (or cursor row)
s Cycle sort: Name → Branch → Last Commit
r Toggle reverse sort
d Filter: dirty repos only
c Filter: clean repos only
a Show all repos (clear filter)
q Quit
Escape Back (from detail screen)

Status symbols

  • clean
  • M modified
  • + staged
  • ? untracked
  • ahead of remote

Detail screen

Press Enter on any repo to see detailed info: branches, last fetch, and authors. Press Escape to go back.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ggit-0.6.0.tar.gz (130.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ggit-0.6.0-py3-none-any.whl (16.7 kB view details)

Uploaded Python 3

File details

Details for the file ggit-0.6.0.tar.gz.

File metadata

  • Download URL: ggit-0.6.0.tar.gz
  • Upload date:
  • Size: 130.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for ggit-0.6.0.tar.gz
Algorithm Hash digest
SHA256 c391cf4f2f4db766e54f66054f67148b6f90cc110d04595641a86d194c57fee0
MD5 926c19a72a5424878ba7798795b4542a
BLAKE2b-256 58b3a65dacf4862d779904cb6653b94ed2fab40cdcb37e98a342e64a30e189c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for ggit-0.6.0.tar.gz:

Publisher: python-publish.yml on denrou/ggit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ggit-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: ggit-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 16.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for ggit-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ec87c88f29c6499820c182bafd9109c359ea4d34c70da3a0c4866f664419a15f
MD5 bddf25d9da723b33bb8764f2ae0a07e0
BLAKE2b-256 cc4037035c74d921776c028fca933bb690651b3226d3fa6b60f5f103b030440e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ggit-0.6.0-py3-none-any.whl:

Publisher: python-publish.yml on denrou/ggit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 files

0.5.1

2 files

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page