It's been a while since our last major release, but we cut and shipped 0.12 just in time for the summer! There are a couple of amazing, major new features in this new build, so get your beta on and help us kick the tires.
The three big things that have changed in this release are a new lane-based commit view, an improved ability to modify commits and a new undo timeline. We're now version controlling your version control!
Lane Based Commit View
One thing that has been somewhat confusing has been the state of the commits that you have in your branch. Are they pushed? Are there commits upstream that you haven't integrated? Have you rebased in a way that mirrors commits on the server?
Several months ago Kiril opened a public github issue to try to explore what we might want in a UI to more simply communicate these questions when showing our commits on a virtual branch. The result is the new commit view UI, which much more clearly demonstrates which commits are local only, which have been pushed, what is upstream and more.
Advanced Commit Editing
GitButler has always been able to do some simple undo and squashing actions, but this release pushes those capabilities to 11.
Some pretty amazing things that you can now very easily do:
- Undo any commit in your history.
- Drag files from one commit to another.
- Reorder commits by dragging and dropping them.
- Edit commit messages anywhere in your commit stack.
- Take new uncommitted work and drag it into any commit in your history to absorb the changes.
- Add empty commits into your stack and drag changes into them.
If you've ever wanted to be an interactive rebasing master, congratulations, you are now a power interactive rebaser!
Undo Timeline
Finally, someone is version controlling your version control!
You now have a timeline that you can click on in the lower left hand corner that will bring up a log of all the important operations that you've ever done in GitButler for this project.
Not only that, but you can click on any of them to time travel back to right before that operation was started.
Now you can easily undo anything, or find versions of files from the past. Also, unlike git reflog
, we also take snapshots of your working directory (with every operation and occasionally if we've seen uncommitted work) so you can even get back work that you never committed anywhere.
If you're interested in the nitty gritty details, we also worked on this feature publicly.
Some Smaller Stuff
Those are the big new features, but there are lots of smaller things too. I'll cover a few of the more generally interesting stuff real quick.
Revamped Commit Signing
Our first attempt to support commit signing was entirely integrated in the product, but it was fairly limited – we would only use our generated SSH key and it wouldn't do it for rebases and other situations.
We've taken out that implementation and now simply fork/exec to the respective gpg
or ssh-keygen
calls, the same way that git
itself does. This means that we're now supporting GPG signed commits and it should work with however you had Git setup to sign stuff before. You can also use SSH to sign commits, even with password protected keys or agents like 1Password.
Open Source Workflows
Our new release now has an experimental feature you can turn on where you can have a target branch on a different remote than the one that you create new branches on.
This allows you to have an upstream/master
from an open source project that you don't have write access to, but create your feature branches on origin
which you can write to.
You can turn on this feature under your user preferences.
New AI Stuff
There are a few nice new AI customizations that you can use with GitButler for branch name generation and commit message generation.
You can now use a local Ollama server to run your AI features entirely locally and on nearly any open source model you want.
If you use the OpenAI API with your own key, we now let you choose the GPT-4 Omni model if you prefer.
Finally, we now allow custom LLM prompts! This is super useful if you want to follow a specific format or create your messages in another language.
That's it!
Lots to dig into, so head over to our homepage to download the latest version and as always, join us on Discord to let us know about any issues you run into.
Thanks!