October 23rd, 2024

GitButler: Fearless Rebasing

GitButler's new "Fearless Rebasing" feature in version 0.13 improves the rebasing process by allowing users to resolve merge conflicts at their convenience, enhancing flexibility and maintaining a clean project history.

Read original articleLink Icon
CuriositySkepticismAdmiration
GitButler: Fearless Rebasing

GitButler has introduced a new feature called "Fearless Rebasing," which enhances the rebasing process by addressing the common issue of merge conflicts. Traditionally, rebasing in Git can be cumbersome, often leading to multiple conflicts that halt progress. The new approach, inspired by the Jujutsu project at Google, allows users to handle conflicts more efficiently. Instead of stopping the rebase process when a conflict occurs, GitButler now partially applies non-conflicting changes and marks the problematic commits. This enables users to resolve conflicts at their convenience, without the pressure of completing them in a specific order. The updated workflow allows for a more flexible and user-friendly experience, encouraging users to embrace rebasing while maintaining a clean project history. The latest version of GitButler, 0.13, implements this feature, making it easier for users to manage their commits and resolve conflicts as they arise.

- GitButler's "Fearless Rebasing" simplifies the rebasing process by managing merge conflicts more effectively.

- Users can now resolve conflicts at their convenience, without being forced to address them in a specific order.

- The new feature allows for partial application of non-conflicting changes during a rebase.

- The update aims to encourage more users to adopt rebasing while maintaining a clean project history.

- GitButler version 0.13 introduces this user-friendly workflow for managing commits.

AI: What people are saying
The comments reflect a mix of opinions and experiences regarding GitButler's new feature and the rebasing process in general.
  • Users discuss the merits and drawbacks of rebasing versus merging, emphasizing that neither is inherently better and the choice depends on context.
  • Some commenters share tips for improving the rebase experience, such as configuring Git's `rerere` feature.
  • There is curiosity about GitButler, with some users expressing frustration over the product's visibility and accessibility.
  • Several users reference their experiences with rebasing, noting that its impact on their workflow has been minimal.
  • Scott Chacon's credibility as an author and Git expert influences some users' willingness to try new tools like GitButler.
Link Icon 11 comments
By @imiric - 3 months
I have yet to try Jujutsu or GitButler, but Git has a built-in way to make conflict resolution a bit easier with `rerere`. To be honest, I don't find doing this work manually a major chore, so I don't enable it, but it's there if you need it.

I would like to comment on this:

> I have been asked countless times if it's better to merge or to rebase and while I never want to stir up a hornet's nest, I have always advocated merging over rebasing.

I've been involved in this discussion many times as well, and the correct answer is that one isn't inherently "better", and you shouldn't _always_ prefer one over the other. There are situations when a merge is preferable (e.g. to keep a branch in history), and others when a rebase is (e.g. to, well, _base_ some work on a specific commit). The choice of when to use either will depend on the author's or team's preference in each case, which is why it's given as an option in most web-based PR/MR workflows. Squashing is another task you don't want to always do either.

I partly blame this confusion on Git's UI, and on the baseless fears spread about rebasing for years, which many developers mistakenly absorbed. The amount of times I've heard that force-pushing after a rebase is "dangerous" is too high. No wonder people find it scary...

By @epolanski - 3 months
Serious question: how many times the pain of going through rebases rather than merges made a difference, or even better, really paid off in engineering terms?

To me it's virtually zero in seven years but it might be due to the teams and projects I've been involved with.

By @dimal - 3 months
Off topic but why do product blogs always exist on a separate domain, with no link to the product website? I never heard of GitButler. Reading this is making me curious about it. But the home link in the top left goes to the blog home. If I want to actually see the product, I have to manually edit the url, on my iPad. Why does everyone do this? Seems obvious to have a link to the main site. /rant
By @mplanchard - 3 months
Configuring rerere makes a huge difference in overall rebase experience. The following is a standard addition to my gitconfig

    [rerere]
    enabled = true
    autoupdate = true
By @ibejoeb - 3 months
A talk about gitbutler on the devtools-fm podcast: https://www.youtube.com/watch?v=I-D6zChu3YI
By @eviks - 3 months
At least one example of a conflicted hunk and what exactly gets saved would be more useful than a full screen screenshot just to show a single "conflicted" button in the UI
By @johnea - 3 months
With syslog, everything in git is "fearless"
By @User23 - 3 months
As an aside you can avoid the vast majority of unnecessary rebase tedium with proper use of

  git rebase —onto
By @hemogloben - 3 months
I was looking forward to trying this out, unfortunately Tauri dropped support for Ubuntu 20.04, and thus GitButler did as well: https://github.com/gitbutlerapp/gitbutler/issues/4881
By @chx - 3 months
I must admit I usually immediately disregard any fancy new git tools, they come and go and often don't work right and create a gigantic mess.

But... have you seen who wrote this article?

Scott Chacon. If there's anyone in this world whose article would make me try a new git tool, it's him. He wrote the Pro Git book, Git Internals. Oh and cofounded GitHub. This is not argument from authority fallacy. This is "hey! this guy knows git like very very few others, it's worth listening to what he has to say".