From: Pierre Habouzit <madcoder@debian.org>
To: Xavier Maillard <zedek@gnu.org>
Cc: git@vger.kernel.org
Subject: Re: What's the best method between merging and rebasing ?
Date: Mon, 12 Mar 2007 18:37:27 +0100 [thread overview]
Message-ID: <20070312173727.GC30489@mad.intersec.eu> (raw)
In-Reply-To: <200703121634.l2CGYtGx027263@localhost.localdomain>
[-- Attachment #1: Type: text/plain, Size: 2682 bytes --]
On Mon, Mar 12, 2007 at 05:34:55PM +0100, Xavier Maillard wrote:
> From: Pierre Habouzit <madcoder@debian.org>
>
> On Mon, Mar 12, 2007 at 12:39:38PM +0100, Xavier Maillard wrote:
> > Hi,
>
> > Say I have a project in this state:
>
> > orig master -> A -> B -> C -> HEAD
>
> > I want to make A diverging from the original branch so I would be
> > at this state :
>
> > orig master -> A -> B -> C -> HEAD
> > \
> > -> D -> E -> F ->
>
> > I want master to be at HEAD of the new branch and I want to pick
> > commits here and there from the original master branch.
>
> I'm not sure I get this right, but if I understand you correctly, I'd
> say that you could branch your master into a old-master branch.
>
> What I am tryin to explain is that I want to get rid of the old
> master branch and pick commits from it here and there (that's
> what is called cherry-pick I guess).
>
> So in the end I will end with:
>
> -> D -> E -> F -> several commits from old master -> HEAD (of new master)
>
> So it seems to be cherry-picks + rebase master on new HEAD but I
> am not sure at how things are doing :)
okay then I got this right, you don't want to rebase master on new
HEAD because you would keep the commits you don't want (I guess). What
you start from:
orig master -> A -> B -> C (master)
\
-> D -> E -> F topic
let's say you want to keep A and C from master. here is what I'd do:
$ git checkout topic # topic will be the new master
$ git cherry-pick A C # we want to keep A and C
we now have:
orig master -> A -> B -> C (master)
\
-> D -> E -> F -> A' -> C' (topic)
$ git branch -D master # we don't want to keep master anymore
$ git branch -m topic master # rename topic branch into master
The last step will loose B completely, so if you want to keep it, you
want to keep an old master HEAD around so that references to that branch
remain somwhere. You could git branch -m master old-master at step 3
rather than deleting it in that case.
But beware that if you do that, as you basically rewrote master's
history, if anyone fetchs from your master, you will f**k up his branch,
because you rewrote history. In that case I think you have to commit a
reverse patch for B (and all the other patches you want to remove) and
then merge topic into master. Your call :)
--
·O· Pierre Habouzit
··O madcoder@debian.org
OOO http://www.madism.org
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
next prev parent reply other threads:[~2007-03-12 17:37 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-12 11:39 What's the best method between merging and rebasing ? Xavier Maillard
2007-03-12 12:08 ` Pierre Habouzit
2007-03-12 16:34 ` Xavier Maillard
2007-03-12 17:11 ` Johannes Sixt
2007-03-12 19:43 ` Pierre Habouzit
2007-03-12 17:37 ` Pierre Habouzit [this message]
2007-03-12 19:14 ` Xavier Maillard
2007-03-12 19:42 ` Pierre Habouzit
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=20070312173727.GC30489@mad.intersec.eu \
--to=madcoder@debian.org \
--cc=git@vger.kernel.org \
--cc=zedek@gnu.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.