Junio C Hamano <gitster@xxxxxxxxx> writes: > What if we do not say --onto here? I am not asking what the current > implementation does (we get an error message saying "I want 'onto' > specified"). What _should_ this command mean to a na??ve user? > > $ git rebase [-i] --root > > I think it should mean "replay all my history down to root". The > original root commit should become the new root commit in the > rewritten history. Yes, I definitely agree with everything you say here. That's exactly what I'd expect from git rebase --root without --onto, and what I'd hope to be able to implement in a patch series. > For the root commit in the history, you check it out on the detached > HEAD. Under "--interactive" if the insn sheet tells you to allow > the user to "edit/amend/reword" it, give control back the user after > you have detached HEAD at that commit. The user experience should > be identical to the case you are replaying on an existing commit > after that point. I think it might a little more complicated than detecting when we have to do a commit --amend on the root commit though? The user might have reordered the first commit (introducing A and B, say) with the second commit (introducing C and D), or dropped the original root commit entirely. My understanding of the way --interactive works at the moment is that it checks out the starting commit (whether given explicitly by --onto or taken from <upstream>) and then 'plays out' the commits as described in the instruction sheet. I could re-use this unchanged if I could do a git checkout --orphan without having to create a new branch, but I don't think this is allowed: I can have a detached head or make an orphan checkout onto a new branch, but not both at the same time? Would you prefer that I create a temporary branch just to be able to git checkout --orphan onto it here, or that I add support for this kind of 'detached HEAD with no parent' state, or is there a natural way to rework --interactive without needing to do this which I'm missing? Best wishes, Chris. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html