git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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 --]

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