Today we released version 0.15 of the GitButler client, featuring a brand new user interface that we've been working on for quite a while.

What has changed?
Our 0.14 release was at the end of November and we've done 35 releases since then. If you haven't been paying attention, we've changed a lot in that time.
Here's a quick overview.
Completely new layout
We've changed the layout of the GitButler client to move the branch listing to another tab, helping you concentrate on your workspace more. This has moved a lot of the navigation around a bit, but in a way that we hope you'll find easier to use.
Completely new workspace design
Our main workspace view is now a bit different, with the ability to have unassigned files and improved commit navigation.

In the previous interface, all modified files would be assigned to some branch. In 0.15, files will by default be in a single, unassigned list. You can still drag them to a branch to assign them there if you wish.
Advanced commit message editor
In 0.15 there are two modes for creating or modifying commit messages. A simple inline editor at the top of the lane, or you can also pop it out into a larger, richer editor to really craft your messages properly.

In addition to just having way more space, you can also make sure that your messages wrap automatically, so they look good on the command line too.
Easier to use Operations History
You may not even know that GitButler saves everything that you do and gives you infinite undo, but we do. We've moved the history timeline to a main tab so you can find and get to it easier. Undo anything you've done, easy as pie.

Partial hunk commits
You can now select individual lines of code to commit, rather than only entire hunks.

Moving changes between commits
You can now drag a file from one commit directly to another one to amend both. Or drop it on the Unassigned lane to essentially "uncommit" it.

Uncommitting individual files
You can also now uncommit the changes of a single file from any commit by simply left clicking on it in the commit and selecting "Uncommit changes".

I'm pretty good at Git and I have to admit that even for me, it would be a bit of a mental exercise to figure out how to un-commit the changes in a single file, several commits back.
Initial empty commits
GitButler has allowed you to insert empty commits above or below other commits that you can modify later, but now you can create an empty commit as your first commit in a branch.

This allows you more flexibility to even be able to create a group of commit messages first, then add code changes to them after the fact.
GitLab integration
GitButler can now use GitLab merge requests rather than only being able to open and manage GitHub's pull requests.
More code editors
Want to open your project in Cursor instead of VS Code? No problem, now you can choose from a whole bunch of popular GUI code editors, including Zed, Windsurf and Cursor.

Regular Git references
GitButler used to create special, semi-hidden references for the branches that we made. We are now just using normal Git branches for the virtual branches. We're working hard on making going back and forth between GitButler and vanilla git even better.
Speed and Stability
We're working hard to get to a fast and stable 1.0 release soon, and the new UI overhaul includes an iceberg of under the hood work that should make everything much faster and more stable going forward. It also paves the way for some incredibly exciting upcoming features.
Go Get Em
Those are the main big things, but there are also tons of bug fixes, stability and speed improvements and more. If you want to try this out today, go download GitButler at a server near you.

Written by Scott Chacon
Scott Chacon is a co-founder of GitHub and GitButler, where he builds innovative tools for modern version control. He has authored Pro Git and spoken globally on Git and software collaboration.
More to Read

GitButler's new patch based Code Review (Beta)
Introducing Butler Review, a new commit-based, chat centered code review tool, now in beta.

How to do patch-based review with git range-diff
Diving into `range-diff`, the little known Git power tool to compare two versions of a series of patches.

Stacked Branches with GitButler
GitButler can now manage dependent branches that are stacked, including managing stacked GitHub PRs.
Stay in the Loop
Subscribe to get fresh updates, insights, and exclusive content delivered
straight to your inbox.
No spam, just great reads. 🚀