git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Editing the root commit

From
Chris Webb <chris@arachsys.com>
Date
Jun 20, 2012, 19:35 UTC
Message-ID
<20120620193513.GA3192@arachsys.com>
In-Reply-To
<7vy5nhvo0z.fsf@alter.siamese.dyndns.org>
Junio C Hamano <gitster@pobox.com> writes:
Show 9 quoted lines
> 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.

Show 6 quoted lines
> 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.
Previous: Chris WebbNext: Martin von Zweigbergk
Message 27 of 29 in “Editing the root commit”
  1. Chris WebbJun 19, 2012
  2. Junio C HamanoJun 19, 2012
  3. Chris WebbJun 19, 2012
  4. Chris WebbJun 20, 2012
  5. Junio C HamanoJun 20, 2012
  6. Jeff KingJun 20, 2012
  7. Chris WebbJun 20, 2012
  8. Jeff KingJun 20, 2012
  9. Chris WebbJun 22, 2012
  10. Junio C HamanoJun 22, 2012
  11. Chris WebbJun 22, 2012
  12. Chris WebbJun 22, 2012
  13. Junio C HamanoJun 22, 2012
  14. Chris WebbJun 23, 2012
  15. git-commit bug (was Re: Editing the root commit)Chris Webb, Jun 26, 2012
  16. git-checkout: disallow --detach on unborn branchChris Webb, Jun 26, 2012
  17. Junio C HamanoJun 26, 2012
  18. Chris WebbJun 26, 2012
  19. 1/2 rebase -i: support --root without --ontoChris Webb, Jun 26, 2012
  20. Junio C HamanoJun 26, 2012
  21. Chris WebbJun 26, 2012
  22. Junio C HamanoJun 26, 2012
  23. Chris WebbJun 26, 2012
  24. Junio C HamanoJun 26, 2012
  25. Chris WebbJun 26, 2012
  26. 2/2 Add tests for rebase -i --root without --ontoChris Webb, Jun 26, 2012
  27. Chris WebbJun 20, 2012
  28. Martin von ZweigbergkJun 25, 2012
  29. jaseem abidJun 19, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.