Elijah Newren <newren@xxxxxxxxx> writes: > +BEHAVIORAL INCONSISTENCIES > +-------------------------- > + > + * --no-ff vs. --force-rebase Do we want to `--quote` these? > + These options are actually identical, though their description > + leads people to believe they might not be. Perhaps the same bandwidth can be spent on improving their description, instead of adding this paragraph? > + * empty commits: > + > + am-based rebase will drop any "empty" commits, whether the > + commit started empty (had no changes relative to its parent to > + start with) or ended empty (all changes were already applied > + upstream in other commits). > + > + merge-based rebase does the same. > + > + interactive-based rebase will by default drop commits that > + started empty and halt if it hits a commit that ended up empty. I think the description is accurate. WRT a change that ends up being empty (as opposed to a change that is empty from the beginning), I'd think that the current behaviour is desireable one. "am" based rebase is solely to transplant an existing history and want to stop much less than "interactive" one whose purpose is to polish a series before making it publishable, and asking for confirmation ("this has become empty--do you want to drop it?") is more appropriate from the workflow point of view; so it may deserve s/inconsistencies/differences/. > + The --keep-empty option exists for interactive rebases to allow > + it to keep commits that started empty. On the other hand, lack of --keep-empty on the "am" side is probably a bug that wants to be fixed. > + * empty commit messages: > + > + am-based rebase will silently apply commits with empty commit > + messages. > + > + merge-based and interactive-based rebases will by default halt > + on any such commits. The --allow-empty-message option exists to > + allow interactive-based rebases to apply such commits without > + halting. Ditto for desirable difference coming from workflow point of view. > + * directory rename detection: > + > + merge-based and interactive-based rebases work fine with > + directory rename detection. am-based rebases sometimes do not. I quite do not get what the big deal is with "directory rename"; it is merely a degree of magic heuristics employed while detecting file renames. It is natural to expect that the less information you make available to the machinery, the less amount of heuristics gets exercised to make "magic" happen. Is the internal implementation detail described below (omitted) all that interesting to general readers of "git rebase --help", I wonder? I would understand it if this were under Documentation/technical/, though.