Subject: Re: odd behavior with git-rebase

From: Junio C Hamano <[email-masked]>
Date: Fri, 23 Mar 2012 13:33:30 -0700

Neil Horman <[email-masked]> writes:

> I know that git cherry-pick allows for picking of empty commits, and it appears
> the rebase script uses cherry-picking significantly, so I'm not sure why this
> isn't working, or if its explicitly prevented from working for some reason.

The primary purpose of "rebase" is (or at least was when it was conceived)
to clean up the existing history, and a part of the cleaning up is not to
replay a patch that ends up being empty.  Even though we try to omit an
already applied patch by using "git cherry" internally when choosing which
commits to replay, a commit that by itself is *not* empty could end up
being empty when a similar change has already been made to the updated
base, and we do want to omit them.

A commit that is empty (i.e. --allow-empty) by itself was a much later
invention than the basic rebase logic, and the rebase may want to be
updated to special case it, but as the default behaviour it is doing the
right thing by not letting an empty commit into the cleaned up history.