When working with Git, you often need to run several commands just to check the current state of your repository.
You might use git status to see changes, git log to review history, and git diff when you need to inspect the details.
These commands become second nature over time, but running them repeatedly during your workflow can still feel a bit tedious.
gst is a CLI tool that brings these Git state checks together into a single, unified view.
What You Can See
When you launch gst, you can view your current branch, differences from remote repositories, modified files, staged changes, working directory diffs, stashes, and the commit graph—all from your terminal.
One of its most useful features is how clearly it shows the relationship between local and remote branches.
You can quickly see whether your local branch is ahead, behind, or contains commits that are not present in the remote repository.
This is especially useful when you resume work or want to review your repository state before pushing changes.
Video Demonstration
A picture is worth a thousand words, so we have also prepared a video demonstration.
Watching it will give you a better sense of how gst works in practice and why it can be useful.
Read-Only Functionality
gst does not modify your repository in any way.
It does not run operations such as push, pull, checkout, commit, merge, or rebase, so you can use it with confidence.
Even if you are not very familiar with Git, it is useful when you simply want to check the current state of a repository without making any changes.
Clear Diff Visualization
In Git, staged changes and changes in the working directory are managed separately.
gst labels modified files with markers such as INDEX, WORKTREE, NEW, and CONFLICT.
In the diff view, you can switch between working directory changes and staged changes.
This makes it easier to verify what will be included in your next commit, which is helpful when organizing commits.
Usage
Installation only requires Go.
go install github.com/lef237/gst/cmd/gst@latest
To run it normally:
gst
For a one-time display:
gst --once
In the TUI, you can use tabs and arrow keys to move between views.
Press r to refresh and q to quit.
Diff Copying Functionality
In the diff view, you can copy the current diff directly to the clipboard.
Press y to copy working directory diffs, and i to copy staged diffs.
The copied content is in patch format, so it can be applied with git apply.
Pressing a copies a patch that includes all changes from HEAD to the current working directory.
This also includes untracked files, making it especially useful when you want to share changes with an AI assistant or send a diff for review.
Binary file contents are not included, so you can easily extract only the textual changes in a manageable format.
Summary
gst is less of a Git operation tool and more of a utility for visually inspecting the state of a repository before taking action.
It does not try to replace Git’s major features, but it does provide a clear and immediate view of your current branch, changes, and history.
For anyone who wants to make Git state checks a little easier, gst is a small and practical tool that does exactly that.
Please give it a try :)
gst
gst is a read-only Git status visualizer for people who want to understand the
shape of a repository before they run Git commands.
Git beginners often struggle because the current state is split across several places:
- commits and branches form a graph
- local branches and remote tracking branches can point at different commits
- the index and working tree can each contain different file changes
gst puts those pieces into one terminal dashboard. It does not push, pull
checkout, commit, merge, rebase, or mutate the repository.
Install
go install github.com/lef237/gst/cmd/gst@latest
For local development:
go run ./cmd/gst
To build a local binary:
go build -o tmp/gst ./cmd/gst
Release steps are documented in docs/release.md.
Usage
gst
gst --interval 1s
gst --once
gst --no-color
By default, gst opens the interactive TUI. Use tab or the left/right arrow
keys to move between views, click a tab label, 1-8 to jump directly…



Top comments (0)