git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Failure and unhelpful error message from 'rebase --preserve-merges'

From
Phil Hord <hordp@cisco.com>
Date
Jan 9, 2013, 13:19 UTC
Message-ID
<50ED6E6C.5020400@cisco.com>
In-Reply-To
<50ED63CB.7060108@cisco.com>

Since 90e1818f9a (git-rebase: add keep_empty flag, 2012-04-20) 'git rebase --preserve-merges' fails in a case where it used to succeed, and it does so with an unhelpful error message.

   $ git rebase --preserve-merges master
   error: Commit 452524... is a merge but no -m option was given.
   fatal: cherry-pick failed
   Could not pick 452524f925aecd0439ae5728fca3887292114dd7
I also tried rebase with '-m'
   $ git rebase --preserve-merges -m master
but that also failed.
The same commands worked fine for these same commits in v1.7.9
>From 90e1818f9a I figured out that the rebase-interactive

machinery had dropped one of my merges. I normally would not notice this when using 'git rebase -p' since it does not invoke $EDITOR by default; but I can see it if I use this:

   git -c sequence.editor=cat rebase -p master
With that I see my list of commits, including these:
  ...
  pick 184ec4d WIP: DHCP datastore reporting
  # pick 16ca56c Merge ptss into sock-threads
  pick 06aea55 WIP: More work normalizing config handlers
  ...
  pick 452524f Merge branch 'ptss' into sock-threads
  ...
  #
  # Note that empty commits are commented out

The failure points to the 2nd merge commit, but it is not the merge commit which was commented out. It is a later merge between the same two branches. I'm not sure how this is related, yet.

But I now know I can work around the problem with this:
    git rebase --keep-empty -p master

I see three problems here, but I don't have any time to go fix them myself right now.

 1. 'rebase -p' should default to --keep-empty since the user will not
    be given the opportunity to edit the list to uncomment the missing
    commits.
 2. 'rebase --interactive -p' should not drop empty merge commits.
 3. rebase should not die with a cryptic cherry-pick error message,
    although I am not sure what useful thing it could say in this
    particular case. Maybe there are other conditions which will cause
    this same failure even if 1 and 2 are fixed.
Phil
Message 1 of 1 in “Failure and unhelpful error message from 'rebase --preserve-merges'”
  1. Phil HordJan 9, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.