git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Thomas Rast <trast@student.ethz.ch>
To: Myxz Ptlk <Adrian.Klingel@illumaware.com>
Cc: git@vger.kernel.org
Subject: Re: Git rebase aggravation
Date: Mon, 23 Feb 2009 10:34:04 +0100	[thread overview]
Message-ID: <200902231034.08736.trast@student.ethz.ch> (raw)
In-Reply-To: <22155203.post@talk.nabble.com>

[-- Attachment #1: Type: text/plain, Size: 2406 bytes --]

Myxz Ptlk wrote:
> 1)  Rebase master into zoo.
> 
> 2) Merge zoo into master.

You may want to consider a merge and topic branch based workflow.  man
gitworkflows has some pointers.

For the rest of the discussion let's assume that your history looks
like

  *---*---*---*  (master)
   \
    \
     o---o---o   (zoo = origin/zoo)

Since you have tracking branches, origin/zoo should be the same as
zoo.  (origin/master should exist too but isn't important for now.)

> But here is what happens.  I spend 3 hours inside "zoo" doing "git rebase
> master".  I go through all the hell of reconciling 6 months of development. 
> Then at the end, it just says that the commits now differ between local
> "zoo" and "origin/zoo".

Indeed, since you rewrote every commit on zoo, it now looks like

  *---*---*---*   (master)
  |            \                 
  |             \                
  \              o'--o'--o'   (zoo)
   \
    o---o---o  (origin/zoo)

> So I figure, I will pull from "origin/zoo".  Naturally, that results in a
> conflicted merge, which I then clear up.  I commit the merge, then push
> everything back to the remote branch.

You're merging like this:

  *---*---*---*   (master)
  |            \                 
  |             \                
  \              o'--o'--o'---M   (zoo)
   \                         /
    o---o---o---------------'
              (origin/zoo)


I think you can already see that you made a mess of history :-)

You should have forced the push instead.  But see "recovering from
upstream rebase" in man git-rebase for information on what happens to
everyone else's work that was based on zoo.

> My thinking is that if I were to attempt a new rebase of master, the
> beginning of what would be rebased would start from RIGHT NOW, instead of
> all the commits over the past 6 months.  To check this, I type:
> 
> git rebase master
> 
> from "zoo".  Lo and behold, it starts the whole process over again.  I "git
> rebase --abort", but I am very, very confused.

Actually it's even worse: it should attempt to rebase _every_ commit
in master..zoo.  If master has progressed since your original
rebase+merge, this will be both the "o" and "o'" commits above.

(Except the ones that did not conflict at all, since they'll still be
the same.)

-- 
Thomas Rast
trast@{inf,student}.ethz.ch

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

      parent reply	other threads:[~2009-02-23  9:35 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-02-23  4:20 Git rebase aggravation Myxz Ptlk
2009-02-23  4:34 ` Nazri Ramliy
2009-02-23  9:34 ` Thomas Rast [this message]

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=200902231034.08736.trast@student.ethz.ch \
    --to=trast@student.ethz.ch \
    --cc=Adrian.Klingel@illumaware.com \
    --cc=git@vger.kernel.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).