Subject: Re: Editing the root commit

From: Chris Webb <[email-masked]>
Date: Tue, 19 Jun 2012 12:17:10 +0100

Junio C Hamano <[email-masked]> writes:

[symbolic reference to root commit]
> Also there is a more important question: Which root commit?  There
> does not necessarily have to be a single "the root" commit in the
> history.

Ah yes, very good point. Anything with a subtree merge would have several
roots, for example.

I suppose the thing that makes root commits special is their lack of
parents, so the most direct way to get a list of root commits for the
current branch would just be

  git rev-list --max-parents=0 HEAD

making the recipe

  ROOT=$(git rev-list --max-parents=0 master)
  git checkout "$ROOT" -- # will fail if more than one root
  git commit --amend
  git rebase [--interactive] --onto HEAD "$ROOT" master

> I personally think "git rebase -i --root" should be made to just
> work without requiring "--onto" and let you "edit" even the first
> one in the history. It is understandable that nobody bothered, as
> people are a lot less often rewriting near the very beginning of the
> history than otherwise.
> 
> Even though I wouldn't bother doing this myself, I wouldn't mind
> reviewing a patch series ;-)

Okay, I'll take a look when I finish my current project!

Best wishes,

Chris.