π git-x β Superpowers for Git
git-x
is a collection of smarter, faster, and more intuitive Git subcommands built to make your daily workflow suck less.
It wraps common Git actions in muscle-memory-friendly, no-brainer commands β perfect for solo developers, team leads, and anyone tired of typing git log --oneline --graph --decorate --all
for the 400th time.
π Table of Contents
- Why Does This Exist?
- Installation
- Example Commands
- Git Integration: How
git-x
Just Worksβ’ - What's Under the Hood?
- Roadmap Ideas
- Built With
- License
Why Does This Exist?
Git is powerful, but its UX is stuck in the early 2000s.
You're probably asking:
- βWhy is this branch here?β
- βWhat changed since I last pushed?β
- βCan I just get a clean, visual summary of this repo?β
- βHow do I undo that commit without wrecking everything?β
Most Git tools either:
- Show too much (spammy logs, unreadable diffs)
- Show too little (cryptic one-liners with no context)
- Or require memorizing a dozen flags
git-x
fixes that by giving you opinionated, purpose-built subcommands that just do the thing.
Installation
cargo install git-x
Or clone and run manually:
git clone https://github.com/simeg/git-x
cd git-x
cargo install --path .
Example Commands
info
Show a high-level overview of the current repo
git x info
Output:
Repo: my-project
Branch: feature/auth
Tracking: origin/feature/auth
Ahead: 2 Behind: 0
Last Commit: "fix login bug" (2 hours ago)
graph
Pretty Git log with branches, remotes, and HEADs
git x graph
Output:
(essentially wraps this)
git log --oneline --graph --decorate --all
color-graph
Colorized Git log with branches, remotes, HEADs, and author info
git x color-graph
Output:
Enhanced version of git x graph
with:
- Full color support for branches, commits, and decorations
- Author names and timestamps for each commit
- Rich formatting that's easy to scan
(essentially wraps this)
git log --oneline --graph --decorate --all --color=always --pretty=format:"%C(auto)%h%d %s %C(dim)(%an, %ar)%C(reset)"
prune-branches
Deletes all local branches that have already been merged into the current branch, while skipping protected ones.
Useful for keeping your repo tidy after merging feature branches.
Defaults:
- Protected branches:
main
,master
,develop
- Wonβt delete current branch
- Will only delete branches that are fully merged
Flags:
--except <branches>
β Comma-separated list of branch names to exclude from deletion
git x prune-branches --except "release,v1.0-temp"
since [ref]
Show commits since a reference (e.g., main, origin/main)
git x since origin/main
Output:
π Commits since origin/main:
- 8f2d9b3 fix login bug
- b41a71e add auth test
undo
Undo the last commit (without losing changes)
git x undo
Output:
Last commit undone (soft reset). Changes kept in working directory.
clean-branches
Delete all fully merged local branches (except protected ones)
git x clean-branches
Output:
π§Ή Deleted 5 merged branches:
- feature/refactor
- bugfix/signup-typo
...
what [branch]
Show whatβs different between this branch and another (default: main)
git x what
git x what develop
Output:
Branch: feature/new-ui vs main
+ 4 commits ahead
- 2 commits behind
Changes:
- + new_ui.js
- ~ App.tsx
- - old_ui.css
summary
Show a short, changelog-style summary of recent commits
git x summary
git x summary --since "2 days ago"
Flags:
--since
β Accepts natural date formats like "2 days ago", "last Monday", or exact dates like "2025-07-01". It uses Gitβs built-in date parser, so most human-readable expressions work.
Output:
ποΈ Commit summary since 3 days ago:
π
2025-07-25
- π fix: update token refresh logic (by Alice, 3 hours ago)
- β¨ feat: add dark mode support (by Bob, 6 hours ago)
π
2025-07-24
- π₯ remove unused dependencies (by Alice, 1 day ago)
π
2025-07-23
- π fix: handle null response in API call (by Carol, 2 days ago)
- Groups commits by day
- Shows commit message, author, and relative time
- Useful for writing daily stand-ups, changelogs, or review summaries
- Defaults to showing commits from the last 3 days
- Can be customized using
--since
(e.g.--since "1 week ago"
) - Sorts commits newest-first within each day
Git Integration: How git-x
Just Worksβ’
Since git-x
is installed as a standalone binary, Git automatically recognizes it as a subcommand when you type git x [command]
.
This is Git's standard extension mechanism β no configuration needed.
How it works:
- You run
git x info
- Git looks for an executable called
git-x
in your$PATH
- Git runs
git-x info
and displays the output
Why this rocks:
- Zero setup required
- Works in any Git repo
- Integrates seamlessly with your existing Git workflow
- All your Git aliases, hooks, and config still work
What's Under the Hood?
git-x
is a thin, opinionated wrapper around native Git commands.
Philosophy:
- No magic β Every
git-x
command maps to standard Git operations - Readable β You can see exactly what Git commands are being run
- Predictable β Follows Git's existing patterns and conventions
- Fast β Minimal overhead, direct subprocess calls
Example: git x graph
literally runs:
git log --oneline --graph --decorate --all
Why Rust?
- Fast startup β Sub-millisecond command execution
- Zero dependencies β Single binary, no runtime requirements
- Cross-platform β Works on macOS, Linux, Windows
- Memory safe β No crashes, no memory leaks
Roadmap Ideas
git x stash
: A smarter stash viewer with previewgit x prune
: Aggressively delete stale branches (with dry-run)git x inspect
: Interactive blame / file history explorer
Built With
- Language: Rust π¦
- Shell: Integrates cleanly with Bash, Zsh, Fish, etc.
- Uses: native
git
under the hood β no black magic
License
MIT