Branchy

A free git client for the Mac

Every branch,
on one line.

Branchy is a git client where worktrees are stations, pull requests live in the app, and commit messages write themselves.

Install with Homebrew Download for Mac Buy me a coffee
feature/worktree-panel · PR #41 fix/invite-expiry · approved ai/ollama · draft main

Worktrees first

Work on three branches without stashing once.

Each worktree is a station on the line, with its changes, its ahead and behind count, and the state of its pull request. Switching is one click, and a new one is two.

  1. main
    main checkout · ↓2
  2. feature/worktree-panel
    ● PR #41 · approved · 4 changes
  3. fix/invite-expiry
    ● PR #203 · conflicts

AI commit messages

Stage it. Press one button. Done.

Claude, OpenAI or a local Ollama model reads your staged diff and writes the message in the style your repo already uses. Your keys stay in the macOS Keychain.

3 files staged
feat(worktrees): show sync state on each stop
- ahead/behind counts next to each one
Write with AI Commit 3 files

An inbox for your PRs

Know the moment someone needs you.

Review requests, comments on your pull requests and replies to you, across every repo, with a real notification. Hide Copilot, bots or anyone else whose comments are noise.

anaruiz asked for your review
branchy#44 · Line-level staging for renamed files
samokafor requested changes
alongtogether#203 · Keep invite links valid
marta-v replied to your comment
“Good catch, I moved the dismissal into the coordinator”

Pull requests, inside the app

Review, reply, merge. No browser tab.

Read the conversation and the diff, reply to threads, comment on a line, approve or request changes. When the checks go green, merge, or turn on auto-merge and let GitHub do it.

OpenShow ahead/behind counts on every stop
  • build
  • unit-tests
  • lint
Squash and merge Merged into main

Stage exactly what you mean

Pick lines, not just files.

Click lines in a diff, shift-click for a range, and stage only those. Even with twenty thousand changed files, the list stays smooth.

@@ −41,6 +41,9 @@ function WorktreeStop
const label = wt.branch ?? basename(wt.path);
− <span className="dot" />
+ <Stop active={active} />
+ {wt.changes > 0 && <Badge n={wt.changes} />}
+ <Sync ahead={wt.ahead} />
Stage 3 lines

Conflicts, handled

“This branch has conflicts” is one click.

Branchy puts the PR's branch in a worktree, merges the base into it and opens the conflicts. Keep yours, take theirs, or open the file in your editor, then push.

src/invites/InviteLink.ts
return now − usedAt > HOUR
return usedAt != null
Keep mine Take incoming Resolved

A history you can read

Forty branches, one calm graph.

Commits ride a transit map. In a busy repo, keep a few lines in colour and bundle the rest into one, so you can read the commit titles again.

Get on the line.

Branchy is free. It uses your own git, so your config, credentials and hooks work exactly like in the terminal. Sign in to GitHub with the GitHub CLI or a token.

macOS 12 or later on Apple silicon

Download for Mac Buy me a coffee

Open the .dmg and drag Branchy to Applications. It's signed and notarized by Apple, so it opens straight away. Apple silicon, macOS 12 or later.