https://github.com/altafino/gitinfo
Terminal UI for exploring who did what in a Git repository
https://github.com/altafino/gitinfo
git go golang
Last synced: 3 months ago
JSON representation
Terminal UI for exploring who did what in a Git repository
- Host: GitHub
- URL: https://github.com/altafino/gitinfo
- Owner: altafino
- License: mit
- Created: 2026-04-02T05:48:02.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-04-02T07:03:37.000Z (3 months ago)
- Last Synced: 2026-04-07T02:25:56.414Z (3 months ago)
- Topics: git, go, golang
- Language: Go
- Homepage: https://altafino.com
- Size: 10.6 MB
- Stars: 4
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# gitinfo
Terminal UI for exploring who did what in a Git repository. Run it from any clone to browse branches, users, and file-level history without leaving the shell.
Built with [Bubbletea](https://github.com/charmbracelet/bubbletea), [Bubbles](https://github.com/charmbracelet/bubbles), and [Lip Gloss](https://github.com/charmbracelet/lipgloss).
---
## Features
| Feature | What it does |
| :--- | :--- |
| **Branch users** | For each local branch, lists unique committers (name and e-mail). |
| **User branches** | Pick a person (name or e-mail, partial match). Optionally limit to the last *N* days. Lists every branch where they committed. |
| **User files** | Pick a person, then optional branch and day window. Lists files they changed, sorted by touch count. **Select a file** to open **commit history** (hash, date, author, subject, body). **Esc** or **q** returns to the file list. |
| **User dashboard** | Pick a person from the same all-authors list, optionally limit to the last *N* days, then view a **scrollable summary**: commit counts (merge and non-merge), first/last activity, total insertions/deletions from non-merge diffs, local branches touched (capped list), top files, recent commits, and commits per calendar year. Large repos may take a moment while git aggregates data. |
---
## Quick start
```bash
cd /path/to/a/git/repo
gitinfo
```
If you are not inside a Git working tree, the program exits with an error.
---
## Install
**With the Go toolchain** (installs from the module at `@latest`):
```bash
go install github.com/altafino/gitinfo@latest
```
**From source:**
```bash
git clone https://github.com/altafino/gitinfo.git
cd gitinfo
go build -o gitinfo .
```
Put the binary on your `PATH` (for `go install`, `$GOPATH/bin` or `$(go env GOPATH)/bin` is typical).
---
## Controls
| Key | Action |
| :--- | :--- |
| **↑** **↓** (also **k** / **j** on some screens) | Move the highlight or scroll |
| **Enter** | Choose a menu item, confirm user, submit a form, or open commit details for the highlighted file |
| **/** | Filter the user list (user branches, user files, user dashboard) |
| **Tab** | Next field on forms |
| **Esc** or **q** | Go back one level; on the main menu, **q** exits the app. From the **User dashboard** screen, **Esc** returns to the day filter; **q** jumps to the main menu. |
| **Ctrl+C** | Quit |
---
## Screens in brief
### Branch users
Shows all local branches and the people who have non-merge commits on each branch. Use **↑** **↓** to move the highlight between users, then **Enter** to open the **User dashboard** (optional last *N* days, same as the menu entry). **Esc** from the day filter returns here.
### User branches
1. Choose **User Branches** from the menu.
2. Select a user from the list (type **/** to narrow the list).
3. Optionally enter **last N days** (empty means all time).
4. You get a list of branches where that user appears in the history.
Matching is case-insensitive and substring-based on name or e-mail.
### User files
1. Choose **User Files**.
2. Select a user (**/** to filter).
3. Optionally set **branch** (empty = all branches) and **last N days** (empty = all time).
4. Use **↑** **↓** to move the cursor over files; **Enter** loads **commit history** for that file and user (respecting the same branch and day filters).
5. In the history view, **↑** **↓** scrolls long output; **Esc** or **q** returns to the file list.
### User dashboard
1. Choose **User Dashboard** from the menu.
2. Select a user (**/** to filter).
3. Optionally enter **last N days** (empty means all history), then **Enter** to load.
4. Scroll the dashboard with **↑** **↓**. **Esc** goes back to the filter step; **q** returns to the main menu.
The dashboard matches the exact author identity (name and e-mail) from the user list. It does not include reflogs, stashes, or other data outside normal commit history.
---
## Requirements
- **Go** 1.24 or newer (to build)
- **`git`** on `PATH`
- Current working directory must be inside a Git repository when you run `gitinfo`
---
## License
[MIT](LICENSE)