It has been 4 months since our last minor release. In that time, we have done 27 patch releases, adding lots of small features, bug fixes, performance improvements and experiments.
Last week we released GitButler 0.13, which is our first release with our new Fearless Rebasing feature, taking a completely new approach to handling branch conflicts. Let's take a quick look at that, and all the other fun stuff in our new release.
Overhauled merge conflict handling
When we started working on GitButler's virtual branches, we knew we needed a way to handle merge conflicts, otherwise you would get in a stuck state at some point. What we came up with wasn't great, and we knew it, but it at least worked.
When you updated from upstream, we would unapply any branches that conflicted with the new incoming code. You could then re-apply them one by one to fix any conflicts, but only as a final merge commit. It was really not a great experience.
However, now we implemented Fearless Rebasing, where we can record conflicts in the commits themselves and allow you to fix them at any time, even continuing to work while older commits are still in a conflicted state.
So now you simply update from upstream and fix your rebased issues one at a time, whenever you would like to work on them.
Improved Integration Preview
Speaking of integrating from upstream, we also addressed an issue that was also quite frustrating. When you hit the "update" button before, it was unclear what was going to happen. Would you get conflicts? Was there a branch that was integrated that would be cleared? Who knows, it's a roll of the dice.
Now when you hit the "Update" button to pull in new upstream work, we show you a preview of what all is going to happen.
For each virtual branch, we will tell you if there is a conflict or it can be cleanly rebased or merged, or if the branch has been integrated. If there are conflicts or issues, you can simply cancel the operation and try integrating later instead.
Patch Edit Mode
As a sort of side-effect of the fearless rebasing functionality, we now have a way to enter into "Patch Edit" mode, where you can checkout a specific patch, modify it and then rebase everything above it onto the new work.
You can enter "edit mode" on any of your commits by expanding them and hitting the "Edit patch" button, which will essentially check out that commit and then amend it when you're done.
This allows you to address feedback by simply editing a commit, similar to what you might do in Git by going into interactive rebase mode and choosing "edit" on one of the lines.
And More
Additionally, we have a new sidebar branches UI, better diff rendering, the ability to clone repositories, image previews, keyboard shortcuts, lots of new customization options, and much more.
Grab your copy from the download link on our homepage or checkout our release notes on GitHub.