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 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).