Subject: Re: Created branch in wrong place... how to fix?

From: Jakub Narebski <[email-masked]>
Date: Thu, 2 Jun 2011 08:28:59 +0200

Howard Miller wrote:

> > > I created a branch in a project and did a series of commits. I now
> > > discover that I really wanted to make all those changes against a
> > > completely different branch of the same project. There shouldn't be
> > > any issues as the branch introduces entirely new files (no changes to
> > > existing code).
> > >
> > > I'm struggling to see a way to do this without loosing the history.
> > > Some Google'ing suggests 'rebase --onto' but I'm struggling to see how
> > > this works or if it is appropriate. Any pointers much appreciated :)
> > > Thanks.
> >
> > This is decidely work for git rebase:
> >
> >  $ git rebase --onto <where it should be based> <where it is based> <branch>
>
> Thanks.... I've re-read the rebase help and spotted the appropriate
> example. This makes sense.
> 
> The only thing that I'm a little bit unsure of is what does 'upstream'
> actually mean (used in the help quite liberally)? Does it just mean an
> older ancestor of the current HEAD? I was struggling to find a definition.

gitglossary(7) has the following definition:

 upstream branch::
        The default branch that is merged into the branch in question
        (or the branch in question is rebased onto). It is configured
        via `branch.<name>.remote` and `branch.<name>.merge`. If the
        upstream branch of 'A' is 'origin/B' sometimes we say
        "'A' is tracking 'origin/B'"

But in the case of rebase "upstream" means branch you forked from (you
created branch from).

N.B. if the branch in question is not too old, you can examine its
reflog ('git log -g <branch>' or 'git reflog show <branch>') for a creation
event, e.g.:

  2de58b3 gitweb/doc@{24}: branch: Created from origin
-- 
Jakub Narebski
Poland