finds.dev← search

// the find

gitbutlerapp/gitbutler

★ 20,635 · Rust · NOASSERTION · updated Apr 2026

The GitButler version control client, backed by Git, powered by Tauri/Rust/Svelte

GitButler is a desktop Git client built with Tauri/Rust/Svelte that reimagines branch management with stacked and parallel branches, drag-and-drop commit manipulation, and an undo timeline. It's aimed at developers who find git rebase -i painful and want a visual layer over Git without abandoning Git compatibility. The CLI ('but') shares the same Rust backend as the GUI.

- The parallel branches concept is genuinely novel: working on multiple branches simultaneously without switching, with changes tracked per-branch in the worktree. This solves a real daily annoyance.

- Undo timeline (snapshots of all operations) is implemented at the engine level in Rust, not as a UI afterthought — meaningful protection against destructive rebase/amend operations.

- The Rust backend is shared between GUI and CLI, so the CLI isn't a thin wrapper calling shell git commands — it uses the same core engine, which means behavior consistency.

- Active development cadence: pushed within the last day of review, well-structured CI with E2E tests, OSV vulnerability scanning, and clear CODEOWNERS separation between frontend/backend.

- Fair Source license (not MIT/Apache) is a real adoption blocker for teams with legal review requirements — the non-compete clause, even with a 2-year expiry, will stop corporate contributors and some OSS integrations cold.

- The 'virtual branches' mental model is a significant conceptual departure from standard Git; onboarding is non-trivial and the docs are still catching up with the pace of feature additions.

- Heavy Claude/AI integration baked into the UI (there's a whole codegen component tree with IRC-style chat) suggests product direction is diverging toward AI-assistant features that may not be what people come here for, adding surface area and potential instability.

- Tauri/Svelte stack means you're debugging across three languages (Rust, TypeScript, Svelte) with IPC boundaries in between — when something goes wrong in the diff view or branch operations, the error context can be genuinely difficult to trace.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →