From: Sergei Organov <osv@javad•com>
To: git@vger•kernel.org
Subject: rebase flattens history when it shouldn't?
Date: Wed, 23 Jul 2014 17:34:25 +0400 [thread overview]
Message-ID: <87k374xkpq.fsf@osv.gnss.ru> (raw)
Hello,
$ git --version
git version 1.9.3
Please consider the following history:
--C--
/ \
/ ----M topic,HEAD
/ /
A---B master
shouldn't
$ git rebase master
be a no-op here? According to my reading of the rebase manual page, it
should be a no-op, as 'topic' is a descendant of the 'master'. Instead,
"git rebase master" flattens the history to:
----C topic,HEAD
/
A---B master
I'd expect --force-rebase to be required for this to happen:
-f, --force-rebase
Force the rebase even if the current branch is a descendant of the
commit you are rebasing onto. Normally non-interactive rebase will
exit with the message "Current branch is up to date" in such a
situation. Incompatible with the --interactive option.
Also notice that:
$ git rebase --preserve-merges --verbose master
does perform the rebasing work, even though it does not change the
history in the end.
Here is use-case where it came from and where it gave me real surprise:
I have pull.rebase=true in configuration. Being on a remote tracking
branch, I've successfully pulled from the origin and had no any local
changes on this branch. Then I've successfully merged another branch to
the current one but didn't push the changes back upstream. A few hours
later I returned to the work and issued "git pull" that instead of doing
nothing (as it would be should pull.rebase be either "false" or
"preserve") created a surprising mess.
Do you think it's worth fixing?
Here are reproduction commands for the example history:
git init t
cd t
echo A > a
echo B > b
git add a b
git commit -m A -a
git checkout -b x
echo A >> a
git commit -m C -a
git checkout master
echo B >> b
git commit -m B -a
git checkout -b topic
git merge -m M x
git branch -d x
git rebase master
--
Sergey.
next reply other threads:[~2014-07-23 13:34 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-23 13:34 Sergei Organov [this message]
2014-07-23 17:52 ` rebase flattens history when it shouldn't? Jonathan Nieder
2014-07-23 19:33 ` Sergei Organov
2014-08-06 15:09 ` Holger Hellmuth
2014-08-06 15:34 ` Sergey Organov
2014-08-06 11:36 ` Sergey Organov
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=87k374xkpq.fsf@osv.gnss.ru \
--to=osv@javad$(echo .)com \
--cc=git@vger$(echo .)kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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