#git #viewer #git-history #rebase #gui

app gitshrub

The "don't touch my garbage" git client

5 stable releases

Uses new Rust 2024

new 1.4.0 Apr 8, 2026
1.3.0 Mar 31, 2026
1.2.0 Mar 30, 2026
1.1.0 Mar 29, 2026
1.0.0 Mar 29, 2026

#58 in Development tools

MIT license

580KB
4K SLoC

GitShrub 🥦

Bramble the GitShrub possum

The "don't touch my garbage" git client.

GitShrub screenshot

A git history viewer that doesn't look broken. It won't win any design awards, but copy-paste works and the UI doesn't look like Windows Vista lost its theme folder. It has a possum as its mascot because it caters to a certain work style. It will bite you if you do things wrong, but you won't if you're me.

What makes it different

  • No confirmation dialogs. Actions execute immediately. You're an adult.
  • Reflog in the graph. Toggle reflog from the View menu to see orphaned commits (pre-amend, pre-reset, pre-rebase) right in the tree. The safety net for the no-confirmation policy. Your old commits are still in the garbage pile, you just need to find them.
  • Stash in the graph. Toggle stash from the View menu to see your stashed changes as commits in the tree. Maybe you'll finally start using stash now.
  • Multi cherry-pick with reorder. Select multiple commits, drag them into the order you want, pick or skip each one.
  • Big abort button. When you're in the middle of a rebase gone wrong and can't remember the right --abort flag, there's a banner at the top with a button. It also shows continue when applicable.
  • Right-click origin/master. You don't need a local tracking branch to checkout. If you can see it in the graph, you can act on it. Checkout automatically sets up tracking.
  • Interactive rebase from the graph. Right-click any commit, reorder with drag-and-drop, set actions per commit (pick, reword, edit, squash, fixup, drop).
  • Push with force-push recovery. Push dialog lets you pick remote and branch. If it's rejected due to diverged history, it asks before force pushing instead of just failing.

Features

  • Commit graph with color-coded branch/merge lines
  • Branch labels [master] and tag labels <v1.0> rendered inline
  • Unified diff viewer with file list sidebar
  • Multi-select with Shift+Click and Ctrl+Click
  • Keyboard navigation (Up/Down/Home/End/PgUp/PgDn)
  • Detects in-progress rebase, cherry-pick, merge, bisect, and revert
  • Fetch, push, add remote, update submodules, and cleanup from the menu bar
  • Toggle all branches, reflog, and stash visibility without restarting
  • Refresh with F5 / Ctrl+R

Usage

gitshrub                          # current branch
gitshrub --all                    # all branches
gitshrub --reflog                 # show orphaned commits
gitshrub feature/login            # specific branch or tag
gitshrub -- path/to/file.rs      # file or directory history
gitshrub --all main -- src/       # combine them

Run from inside a git repository.

Building

cargo build --release

The binary will be at target/release/gitshrub. Only runtime dependency is git on your PATH.

License

MIT

Dependencies

~24–50MB
~820K SLoC