git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Johannes Sixt <j.sixt@viscovery.net>
To: Eugene Sajine <euguess@gmail.com>
Cc: Jeff King <peff@peff.net>, git@vger.kernel.org
Subject: Re: [BUG] - git rebase -i performs rebase when it shouldn't?
Date: Mon, 12 Apr 2010 17:47:08 +0200	[thread overview]
Message-ID: <4BC3407C.10701@viscovery.net> (raw)
In-Reply-To: <w2t76c5b8581004120828p8e1e5c49m7bcc53c8c3e68d06@mail.gmail.com>

Am 4/12/2010 17:28, schrieb Eugene Sajine:
> On Mon, Apr 12, 2010 at 11:13 AM, Johannes Sixt <j.sixt@viscovery.net> wrote:
>> Am 4/12/2010 16:09, schrieb Eugene Sajine:
>>> esajine@ESAJINEWWW /c/git_repos/test2 (topic)
>>> $ git rebase master
>>> Current branch topic is up to date.
>>> <======= Really? Topic is actually based on next – what does this "up
>>> to date" mean??
>>
>> Why should rebase bother? The difference between master and topic are
>> *two* commits. Since these two are already on top of master in linear
>> history, you get no advantage by doing a rebase operation. Therefore, you
>> see "already up to date".
> 
> You lost me completely...
> Rebase means change the base of the commit, change the fork point.

Rebase is meant to change the fork point for a history like this:

  --o--o--A--o--o--B  <-- master
           \
            o
             \
              o       <-- topic

topic forks from master at commit A; you use rebase to create history that
looks like this:

  --o--o--A--o--o--B     <-- master
                    \
                     o
                      \
                       o <-- topic

(OK, you knew that already.)

> Current fork point for topic is next. I want it to be master. What is
> up to date here???

You are already in the second situation above. The fact that you labeled
one commit "next" in between, like this:

  --o--o--A--o--o--B     <-- master
                    \
                     o   <-- next
                      \
                       o <-- topic

does not change the meaning of the command "git rebase master" in the
slightest: topic is "up to date" with respect to master.

> The message is poorly worded for sure.
> 
> I know that the form i have to use is:
> 
> git rebase --onto master next topic
> 
> but it is just because topic is not direct descendant of master, isn't it?

Watch out the wording that you use: "descendant of" has a well-defined
meaning in git, in particular, topic *is* a direct descendant of master.

What you wanted to say is: "but it is just because I have accidentally
begun to commit 'topic' on top of 'next', but I didn't want to do that".

And yes, you are right, because of this you need --onto in the rebase command.

> Come on! Please, please, explain me why it behaves DIFFERENTLY:
> 
> esajine@ESAJINEWWW /c/git_repos/test2 (topic)
> $ git rebase --onto master topic
> First, rewinding head to replay your work on top of it...
> fatal: Not a range.
> Nothing to do.
>                 <======== topic..HEAD is not a range, agreed
> 
> 
> esajine@ESAJINEWWW /c/git_repos/test2 (topic)
> $ git rebase -i --onto master topic
> Successfully rebased and updated refs/heads/topic. <=== BUG – here it
> printed me “noop” in file to edit, when I exited it should do nothing,
> but it still did something and I double checked it.

A historical accident, so to say. The implementor of interactive rebase
felt the "noop" behavior was useful, and I agree, FWIW.

-- Hannes

  reply	other threads:[~2010-04-12 15:47 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-09 19:35 [BUG] - git rebase -i performs rebase when it shouldn't? Eugene Sajine
2010-04-10  4:26 ` Jeff King
2010-04-10  4:39   ` Junio C Hamano
2010-04-10  4:47     ` Jeff King
2010-04-10 19:58     ` Johannes Sixt
2010-04-11 10:15       ` Jeff King
2010-04-11 17:54         ` Johannes Sixt
2010-04-12  1:01           ` Jeff King
2010-04-12 10:50       ` Michal Vitecek
2010-04-12 17:39         ` Johannes Sixt
2010-04-10 22:10   ` Eugene Sajine
2010-04-11 10:22     ` Jeff King
2010-04-11 14:06       ` Eugene Sajine
2010-04-12 14:09         ` Eugene Sajine
2010-04-12 15:13           ` Johannes Sixt
2010-04-12 15:28             ` Eugene Sajine
2010-04-12 15:47               ` Johannes Sixt [this message]
2010-04-13 16:30                 ` Eugene Sajine
2010-04-14  6:08                   ` Johannes Sixt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4BC3407C.10701@viscovery.net \
    --to=j.sixt@viscovery.net \
    --cc=euguess@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=peff@peff.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).