It makes it really easy to work with stacked PRs and keep them in sync, and do some nice tricks like decide which part of the stack a commit goes into, and apply and unapply parts of the stack.
I loved the operation log and how you can instantly revert to an older operation, as an escape hatch from weird merges and other things that go wrong.
But. It is absolutely incapable of dealing with merge conflicts. No matter how trivial the conflict, GitButler makes you click through sometimes multiple iterations of a rebase-like flow where you fix an issue and then go back to the app to tell it you've done so. When clicking the "done" button, it often takes ~5 minutes to recognize what you've done, sometimes reporting several errors (but still proceeding past them) as it's going. During this time, there's no indication of how long you'll be stuck there, or if the operation will ever actually complete successfully. Sometimes I'd restart the app after a few minutes and try again. This process became a daily occurrence.
It got so bad that I tried resolving conflicts using GitHub's UI, thinking I'd just be able to pull down the changes when done. But GitButler wouldn't have that: it detected the changes and required me to rebase or merge to pull them in. The final straw for me was when both of these options resulted in errors, and I was effectively stuck. Luckily, it's easy to just ignore the workspace branch and switch back to your standard git client.
I think the tool shows a lot of promise, but it's just not ready for use in a real-world working conditions, where you're often integrating your work with that of a team and need to frequently merge it, even in the most common cases where conflicts should be easily resolved. I'll revisit it in a year!
aspleenic•37m ago