<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/git-rebase--i-is-not-that-scary-6h0zn0hc1" -->

---
title: git rebase -i is not that scary | daily.dev
description: A demystifying guide to git rebase -i (interactive rebase) aimed at developers who fear the command. Explains that the interactive rebase editor is just a plan...
canonical: https://daily.dev/posts/git-rebase--i-is-not-that-scary-6h0zn0hc1
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: git rebase -i is not that scary | daily.dev
og:description: A demystifying guide to git rebase -i (interactive rebase) aimed at developers who fear the command. Explains that the interactive rebase editor is just a plan...
og:url: https://daily.dev/posts/git-rebase--i-is-not-that-scary-6h0zn0hc1
og:image: https://api.daily.dev/og/posts/6h0Zn0hC1.png
og:image:alt: git rebase -i is not that scary
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# git rebase -i is not that scary

**[Lobsters](https://daily.dev/sources/lobsters)** · 5 min read · 2 upvotes · 0 comments

## Summary

A demystifying guide to git rebase -i (interactive rebase) aimed at developers who fear the command. Explains that the interactive rebase editor is just a plan file, not an immediate action, and walks through common operations like rewording and dropping commits. Covers safety nets including git rebase --abort, the reflog for recovery, and creating backup branches. Also addresses conflict resolution during rebase and recommends using --force-with-lease when pushing rebased branches.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://cachebag.sh/journal/interactive-rebasing>

## Community take

How the wider developer community reacted, aggregated from 2 discussions and 14 comments across lobsters, hackernews (as of 2026-07-25).

**TL;DR:** The community largely agrees that git rebase -i is not scary and is actually a delightful tool once learned, with several commenters expressing surprise that anyone would fear it; a minority note legitimate UX friction around stepping through changes and using the reflog for recovery.

**Sentiment:** 75% positive · 20% mixed · 5% skeptical

**The case for**

- Learning git deeply early in a career pays dividends, and tools like reflog and fsck unlock a lot of potential.
- Interactive rebase is great for fixup workflows and batch-editing an entire branch of commits in one go.
- Safety nets like backup branches and hard-resetting to a known SHA make experimentation low-risk.

**The pushback**

- There is no truly step-by-step interactive mode to preview each change before committing to it, making experimentation harder.
- The reflog is a pain to use for recovery — understanding what it shows and finding the right commit mid-rebase is non-trivial.
- Rebasing can be worse than merging when every commit touches a conflicting area, forcing repeated conflict resolution.

**Hottest debate:** Whether interactive rebase's UX friction around step-by-step inspection and undo is a real problem or easily mitigated by simple workarounds like backup branches and hard resets.

**Open questions**

- Would a truly interactive, step-by-step rebase mode (as JJ reportedly offers) be a better default UX for git?
- Is git absorb a better tool than interactive rebase for the common fixup use case?

**Highlights**

> I think interactive rebase gets its reputation partly from how difficult it is to experiment with it. It has two major problems: it's difficult to try things out step-by-step, and so get a feel for what's going to happen next; and it's difficult to undo things once they've happened and something goes wrong.  For the first issue, there is in theory the ability to abort at any time, but in practice git only gives you an easy opportunity to abort if something goes wrong. The rest of the time, it will try to run the rebase to completion. What would be more helpful would be a truly interactive mode where you can step through each change and see the result of each line before deciding to go ahead or abort. But that's a much more complicated UI, and probably not so appropriate for git itself.  For the second issue, there is always the reflog, but the reflog is a pain to use. First you've got to understand what it's actually showing, and then you've got to find the commits you're actually interested in (not necessarily trivial partway through a complicated rebase). Then you have to actually reset your state back to that commit, which is way more involved than you'd think, in part because (iirc) there's still no way of trivially moving branches back and forth between commits. Once you're familiar with what's going on, interactive rebase is a really nice tool for dealing with an entire branch of commits all in a single batch. For advanced usage, that batchability is a nice feature to have. But I think JJ does this better by concentrating on the non-batch case first, which is a lot easier to understand and makes experimentation a lot easier - each change is separate and the log and repo can be inspected before and after; and undo is always just a single command away and behaves exactly how you'd expect an undo to behave.
> — [Johz on lobsters · 3 points, 1 comments](https://lobste.rs/s/uawqly/git_rebase_i_is_not_scary#c_hcd4am)

> > For the first issue, there is in theory the ability to abort at any time, but in practice git only gives you an easy opportunity to abort if something goes wrong. Can't you just take a note of what your sha was before you start and then `git reset <oldsha> --hard` is always going to get you back? (Oh, plus you can always create a new throwaway branch to do your work on)
> — [dualvariable on lobsters · 1 points](https://lobste.rs/s/uawqly/git_rebase_i_is_not_scary#c_jdrb0f)

**Source threads**

- [lobsters](https://lobste.rs/s/uawqly/git_rebase_i_is_not_scary) · 13 points · 10 comments
- [hackernews](https://news.ycombinator.com/item?id=48912905) · 5 points · 4 comments

## Similar posts on daily.dev

- [Git Rebase for the Terrified](https://daily.dev/posts/git-rebase-for-the-terrified-ynroja8em) · Hacker News · 1 upvotes · 0 comments
- [Git Rebase Deleted Nothing. Your Commit Is Still in the Reflog.](https://daily.dev/posts/git-rebase-deleted-nothing-your-commit-is-still-in-the-reflog--fczn8gdo7) · Medium · 0 upvotes · 0 comments
- [Rebasing in Magit](https://daily.dev/posts/rebasing-in-magit-cmmc3nrey) · Hacker News · 0 upvotes · 0 comments
- [Speeding up interactive rebase in JetBrains IDEs](https://daily.dev/posts/speeding-up-interactive-rebase-in-jetbrains-ides-7pxrdbzbs) · JetBrains · 16 upvotes · 0 comments
- [The Git Recovery Guide: How to Undo Anything \(Without Panic\)](https://daily.dev/posts/the-git-recovery-guide-how-to-undo-anything-without-panic--alupd6iws) · DEV · 1 upvotes · 0 comments

---

Tags: [#git](https://daily.dev/tags/git), [#version-control](https://daily.dev/tags/version-control)

[View this post on daily.dev](https://daily.dev/posts/git-rebase--i-is-not-that-scary-6h0zn0hc1)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"git rebase -i is not that scary","url":"https://daily.dev/posts/git-rebase--i-is-not-that-scary-6h0zn0hc1","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/git-rebase--i-is-not-that-scary-6h0zn0hc1"},"datePublished":"2026-07-25T06:06:59.334Z","dateModified":"2026-07-25T06:39:18.764Z","description":"A demystifying guide to git rebase -i (interactive rebase) aimed at developers who fear the command. Explains that the interactive rebase editor is just a plan...","image":"https://media.daily.dev/image/upload/s--58gMhC4P--/f_auto/v1722860399/public/Placeholder%2012","thumbnailUrl":"https://media.daily.dev/image/upload/s--58gMhC4P--/f_auto/v1722860399/public/Placeholder%2012","isAccessibleForFree":true,"articleSection":"Lobsters","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Lobsters","logo":"https://media.daily.dev/image/upload/s--tl8v_Fku--/f_auto,t_logo/v1698841318/logos/lobste.jpg","url":"https://daily.dev/sources/lobsters"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/git-rebase--i-is-not-that-scary-6h0zn0hc1","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"git,version-control","timeRequired":"PT5M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Lobsters","item":"https://daily.dev/sources/lobsters"},{"@type":"ListItem","position":3,"name":"git rebase -i is not that scary"}]}
```

