Re: odd behavior with git-rebase
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Mar 23, 2012, 20:33 UTC
- Message-ID
- <7vvclvrrad.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <20120323185205.GA11916@hmsreliant.think-freely.org>
Neil Horman <nhorman@tuxdriver.com> 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.