git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [BUG] - git rebase -i performs rebase when it shouldn't?

From
Jeff King <peff@peff.net>
Date
Apr 10, 2010, 04:26 UTC
Message-ID
<20100410042609.GA24295@coredump.intra.peff.net>
In-Reply-To
<z2q76c5b8581004091235ucd9b2a52i223b3191b288c42a@mail.gmail.com>
On Fri, Apr 09, 2010 at 03:35:42PM -0400, Eugene Sajine wrote:
Show 15 quoted lines
> In case of this situation
> 
>        A  master
>         \
>          B  next
>           \
>            C  topic
> 
> 
> $ git rebase --onto master topic
> First, rewinding head to replay your work on top of it...
> fatal: Not a range.
> Nothing to do.
> 
> Which is OK.

I think this doesn't do quite what you thought. It's true there is "nothing to do" as in "nothing to apply", but it _did_ in fact rewind topic back to "master".

You seem to be thinking that
  git rebase --onto master topic

means "rebase everything from master to topic onto master". It doesn't. That would be:

  git rebase master topic
or, if you are already on topic, just
  git rebase master

The "--onto" option takes an argument, which says "put the commits on top of here, even though it was not the upstream base otherwise specified". So what your command does is say "using the current branch (which is topic), take everything built on top of topic (which is nothing), and rebuild it on top of master".

So no, it's not a bug. Yes, it's a terrible interface. There is really no reason IMHO for rebase to take a "which branch to operate on" argument at all. It should just operate on HEAD, like merge does. If you want to merge on a different branch, you "git checkout" that branch first.

That would have made your error less likely, because you would have had no reason to think you needed to say "topic" at all.

-Peff
Previous: Eugene SajineNext: Junio C Hamano
Message 2 of 19 in “[BUG] - git rebase -i performs rebase when it shouldn't?”
  1. Eugene SajineApr 9, 2010
  2. Jeff KingApr 10, 2010
  3. Junio C HamanoApr 10, 2010
  4. Jeff KingApr 10, 2010
  5. Johannes SixtApr 10, 2010
  6. Jeff KingApr 11, 2010
  7. Johannes SixtApr 11, 2010
  8. Jeff KingApr 12, 2010
  9. Michal VitecekApr 12, 2010
  10. Johannes SixtApr 12, 2010
  11. Eugene SajineApr 10, 2010
  12. Jeff KingApr 11, 2010
  13. Eugene SajineApr 11, 2010
  14. Eugene SajineApr 12, 2010
  15. Johannes SixtApr 12, 2010
  16. Eugene SajineApr 12, 2010
  17. Johannes SixtApr 12, 2010
  18. Eugene SajineApr 13, 2010
  19. Johannes SixtApr 14, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.