DEV Community

lef237
lef237

Posted on

Use gst for an Overview of Every Git State

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.

gst overview

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
Enter fullscreen mode Exit fullscreen mode

To run it normally:

gst
Enter fullscreen mode Exit fullscreen mode

For a one-time display:

gst --once
Enter fullscreen mode Exit fullscreen mode

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.

yank diff from gst

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 :)

GitHub logo lef237 / gst

Read-only Git status visualizer

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.

Image

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
Enter fullscreen mode Exit fullscreen mode

For local development:

go run ./cmd/gst
Enter fullscreen mode Exit fullscreen mode

To build a local binary:

go build -o tmp/gst ./cmd/gst
Enter fullscreen mode Exit fullscreen mode

Release steps are documented in docs/release.md.

Usage

gst
gst --interval 1s
gst --once
gst --no-color
Enter fullscreen mode Exit fullscreen mode

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)