Bryan Turner <bturner@xxxxxxxxxxxxx> writes: >> So, from that point of view, this may not be enough, but a "throw >> away all" option is not enough, either. We'd want to have both to >> serve such users better. > > This was why I wondered whether it might be worth extending the > --empty option to add another possible value, like "drop-all", that > would allow the caller to say they want to drop all empty > commits--both those that started out empty and those that became > empty. You are talking about "empty from the beginning" and "has become empty due to rebasing", but the use case you quoted and responding to is not about the distinction between those two. The original scenario that triggered this thread was to clean a history the user created with git-imerge. Part of using the tool, apparently, you can choose to leave empty commits the tool internally needs to create. To the "git rebase" command that is tasked to clean up the history, an empty commit that was left due to what imerge did, and an empty commit that was originally created by the end user (perhaps deliberately in order to server as some sort of a marker) look the same---they both are "empty from the beginning", not "commits that became no-op as the result of rebasing". And in order to help manually sift these two apart, " # empty" marker would help, as there are three kinds of "pick" in the instruction stream. Commits that are not no-op (i.e. without the " # empty" mark), commits that imerge made no-op (the user wants to get rid of) and commits that are no-op because the user wanted them to be. The latter two classes would be marked with " # empty" and the user can selectively apply s/pick/drop/ to them.