> It is rather unusual (or almost always wrong) to have a totally > empty commit log or initial todo list, so it is understandable for > Git in these situations to stop without doing anything further. > > There is no other sensible interpretations of what you are telling > Git to you by returning an empty buffer---it is extremely unlikely > you want to create a commit with no log message (without explicitly > allowing it with --allow-empty-message, the command is likely to > fail anyway), and it is extremely unlikely that you wanted to just > reset the tip of the branch to the --onto commit. > > Once an interactive rebase session has started and you are given the > remainder of the steps to edit and you give an empty buffer back, > however, there are two possible interpretations that are equally > sensible, I would think. > > - One is that you are signaling that you are done with the rebase > session and all the remaining commits are to be discarded. > > - The other is that you botched editing the todo list, and you wish > Git to give you another chance to edit it again. > > I think the implementor chose the first interpretation. The "drop" > insn is a relatively recent invention, and back when it was missing > from the vocabulary, I do not think it was possible to say " discard > all the rest" without emptying the todo list, so that design is > understandable. > > Now we have the "drop" verb, the latter interpretation becomes > possible without making it impossible for the user to express the > former. It might be a good idea to > > (1) save away the original before allowing --edit-todo to edit, > > (2) open the editor, and > > (3) when getting an empty buffer back, go back to step (2) using > the back-up made in step (1). > > Either way, the todo list editor buffer can have additional comment > instructing what happens when the buffer is emptied. > Personally I would like to see your approach (1,2,3) implemented because it is not destructive. If the user wants to achieve something different he can retry. Option / interpretation a) > - One is that you are signaling that you are done with the rebase > session and all the remaining commits are to be discarded. is more difficult to recover from. (I'm still thankful for `.git/logs/HEAD`)