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

Re: Editing the root commit

From
jaseem abid <jaseemabid@gmail.com>
Date
Jun 19, 2012, 11:50 UTC
Message-ID
<CAH-tXsAZXfVshXi8GH+pW8rMbeFK1_LuSLNBp5=bjutN67K9bQ@mail.gmail.com>
In-Reply-To
<20120619091657.GA28005@arachsys.com>
On Tue, Jun 19, 2012 at 2:46 PM, Chris Webb <chris@arachsys.com> wrote:
Show 38 quoted lines
>
> I've recently been polishing up some private code for release, using git
> rebase --interactive to expand on some commit messages.
>
> In a couple of cases, I wanted to edit the root commit. (Adding a COPYING
> file, for example.) I've been successfully doing this with an explicit
>
>  ROOT=$(git log --pretty=format:%H | tail -n 1)
>  git checkout $ROOT
>  git commit --amend --message='Initial import modified' # for example
>  git rebase --onto HEAD $ROOT master
>
> However, this brought two questions to mind.
>
> The first is whether there's a clever symbolic way to refer to the root of
> the current branch, rather than tailing git log output? gitrevisions(7)
> doesn't obviously suggest one.
>
> The second question is whether it's possible to use git rebase
> --interactive
> to edit the root commit along with some subsequent ones in one fell swoop?
>
> My fingers half-remember doing something like
>
>  git checkout --orphan rewritten
>  git rm -rf
>  git rebase --interactive --root --onto rewritten master
>
> a year or so ago, but this now fails (on git 1.7.10) with the somewhat
> surprising error
>
>  $ git rebase --root --onto rewritten master
>  fatal: Needed a single revision
>  Does not point to a valid commit: master
>
> Am I misremembering the recipe here, or has the behaviour changed? It
> seems
> to fail identically with or without --interactive.

I was trying to do something very similar yesterday. I was cleaning up a lot of commits with a rebase -i when I figured out that I cant do that on the root commit.

The man on interactive rebase says,
        Start it with the last commit you want to retain as-is:
        git rebase -i <after-this-commit>

which means root cant be included. Finally I had to settle for some solution like what you mentioned.

If possible Junio, can a feature be added to include root commit also to git rebase -i somehow so that a rewrite including root is easier and more straightforward ?

-- Jaseem Abid http://jaseemabid.github.com

Previous: Martin von Zweigbergk
Message 29 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.