Git remove root commit
git revert <the_commit> but since the commit is root and I can’t remove it.
fatal: Cannot revert a root commit
What to do in that case ?
Please don’t give me links to other topics here, I read them and I don’t understand what to do, I need some basic example about removing some commit.
2 Solutions collect form web for “Git remove root commit”
For removing a root commit, you simply have to remove all branches (and tags) from which it is reachable.
This can be done with
git branch -D branch-name. (You will have to first check out another branch which does not refer to this root commit, since you can’t remove the current branch, I think.)
If you want to retain other commits on this branch and only remove the root,
git filter-branch is better, see the answer from Greg.
You can do this using git filter-branch. First, identify the commit ID at the root that you want to remove. I’ll represent that with
<the_commit>. Then, run
git filter-branch using
--parent-filter and a
sed command that snips off that parent:
git filter-branch --parent-filter "sed 's/-p <the_commit>//'" HEAD
Here’s a transcript of an example I just tried:
$ git log commit 7e1ba37b51fc2cc6289cf66367c9aedc74c664a8 Author: Greg Hewgill <firstname.lastname@example.org> Date: Fri May 27 20:54:27 2011 +1200 three commit a8a410d2361824cbd518a48225e9402a691be93f Author: Greg Hewgill <email@example.com> Date: Fri May 27 20:54:17 2011 +1200 two commit 3171d512d98f6bc5f3c2469312930c0d32d3aa07 Author: Greg Hewgill <firstname.lastname@example.org> Date: Fri May 27 20:54:00 2011 +1200 one $ git filter-branch --parent-filter "sed 's/-p 3171d512d98f6bc5f3c2469312930c0d32d3aa07//'" HEAD Rewrite 7e1ba37b51fc2cc6289cf66367c9aedc74c664a8 (3/3) Ref 'refs/heads/master' was rewritten $ git log commit 489ec1ee20e0dd20cd835ceebf157f628cd75a44 Author: Greg Hewgill <email@example.com> Date: Fri May 27 20:54:27 2011 +1200 three commit a6f5ee410c9ea4fca6fbff265149b7fc555241eb Author: Greg Hewgill <firstname.lastname@example.org> Date: Fri May 27 20:54:17 2011 +1200 two $