On 08/01/2007 11:17, "Johannes Schindelin" <Johannes.Schindelin@xxxxxx> wrote: > But this is what I would do if I had the problem: I would try to create > a state which is as close to the corrupt revision as possible, > use a graft to replace the initial commit with that revision, and > rewrite the branch. I'd probably start by doing something like this: > > $ git symbolic-ref HEAD refs/heads/recreate-first && rm .git/index > $ git ls-tree -r --name-only <initial-commit> | > grep -v "^condor/condor-uninstall.sh$" | > xargs git checkout <initial-commit> > $ git checkout <second-commit> condor/condor-uninstall.sh > [possibly some minor hacking on the latter file to make it work] > $ git commit -c <initial-commit> Wow. `commit' and `checkout' are the only two commands that I have ever heard of in that sequence. How difficult would it be to create a new git repo which is exactly the same minus the initial condor-uninstall.sh commit? That is, just to pretend the initial import of condor-uninstall.sh never existed, and use the second commit of the old repo the first commit of the new, and preserve the rest of the history of the entire repo? Or, to remove both condor-uninstall.sh commits from the history -- deleting that history altogether -- and add it back as a completely new file? If I get enough courage, I'll attempt to understand exactly what it is you're doing in the commands above and try it out on (a copy of) the repo. My willingness to part with the current history and just reinitialise the repo with its current contents increases with time, though. The real problem is that I'm sure I have no idea exactly what the first version of the file looked like, and how it differed from the next one. Denis -- "If we wish to count lines of code, we should not regard them as lines produced but as lines spent." -- Edsger Dijkstra - 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