Git Tools

GitButler Made Branch Stacking Easy

All articles
🥞🎛️🚀

Stacked diffs without learning Phabricator, Graphite, or pain.

Plot twist: branch stacking is the productivity unlock everyone has been circling for years, and GitButler is the first tool that makes it feel obvious. Drag a commit, the stack rebases. Push, every branch in the stack opens its own PR.

The Setup

Install the app, point it at a repo, and the UI replaces the "branches" mental model with "lanes". Each lane is a feature, each lane has a stack, and uncommitted changes float until you assign them.

# install
brew install --cask gitbutler

# or via the CLI for headless work
brew install gitbutler-cli

# create a stack of two dependent branches
but stack create --base main   --branch feat/gallery-radii   --branch feat/gallery-tilt

The Money Pattern

The trick is treating each logical unit as its own branch in a stack, then letting GitButler rebase the entire ladder when main moves. No more "this PR depends on the other PR being merged first" comments. The whole thing ships as a chain.

# assign uncommitted changes to a specific branch in the stack
but assign src/components/RadialGallery.tsx feat/gallery-tilt

# push every branch in the stack as a separate PR
but stack push --create-prs

# rebase the whole stack on top of main
but stack rebase --onto main

The Catch

It's still very GUI-first. The CLI exists but lags the desktop app on features, so headless workflows or CI integration feel undercooked. And if you live in tmux + lazygit, swapping between worlds is jarring.

The Verdict

If your reviewers complain about giant PRs, GitButler fixes that problem in one weekend. Small stacked PRs land faster, review cleaner, and break less. Do not @ me — the diff sizes don't lie. Pair it with worktrees and the workflow sings.

Let us make some quick suggestions?
Please provide your full name.
Please provide your phone number.
Please provide a valid phone number.
Please provide your email address.
Please provide a valid email address.
Please provide your brand name or website.
Please provide your brand name or website.