On Tue, Jun 19, 2012 at 2:46 PM, Chris Webb <chris@xxxxxxxxxxxx> wrote: > > 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 -- 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