From: Klas Lindberg Date: Thu, 02 Oct 2008 14:26:29 GMT Subject: Re: How to remove a commit object? Message-ID: <33f4f4d70810020726g71c6f39eq16585269fb268322@mail.gmail.com> In-Reply-To: Repo size is a problem too, actually. A solution to both problems seemed to be to use git-filter-branch to create a new repo by filtering out all the unwanted files. The astonishing result was that, for the subdirectory I tried it on, 90% or so of the commits on that subdirectory just disappeared. It didn't look right at all. Although I can't say for sure exactly what I did with filter-branch, I would appreciate some guidance for using it. It basically seemed to do exactly what I wanted (recreate the repo, minus some explicit stuff, with history intact otherwise), except the result looked crazy. /Klas On Thu, Oct 2, 2008 at 4:02 PM, Jakub Narebski wrote: > "Klas Lindberg" writes: > >> This doesn't seem to work for me. I will soon be in a situation where >> I need to selectively delete commits in such a way that they become >> completely irrecoverable. I.e. it is not enough to revert a commit. >> The *original* commit must be removed. And of course, the repo history >> is too complex to allow for rebasing followed by garbage collection or >> something like that. > [...] > >> Would it be feasible to write a tool that can selectively replace a >> specific commit in the commit DAG, or would that automatically >> invalidate every SHA key for every commit that follows the replaced >> original? > > It would invalidate SHA1 for every commit after first rewritten. > There are two tools which you can use to rewrite large parts of > history automatically: git-filter-branch, and git-fast-export + > git-fast-import. > > HTH > -- > Jakub Narebski > Poland > ShadeHawk on #git >