On Mon, Mar 06, 2017 at 07:52:10AM +0100, Johannes Sixt wrote: > > Yeah, it is. You can do it easily with 'sed', of course, but if you want > > to avoid the extra process and do it in pure shell, it's more like: > > > > last38=${REV#??} > > first2=${REV%$last38} > > rm -f .git/objects/$first2/$last38 > > Is it "HEAD points to non-existent object" or ".git/HEAD contains junk"? In > both cases there are simpler solutions than to remove an object. For > example, `echo "$_x40" >.git/HEAD` or `echo "this is junk" >.git/HEAD`? Good point. Unfortunately, it's a little tricky. You can't use "this is junk" because then git does not recognize it as a git repo at all. You can't use $_x40 because the null sha1 is used internally to signal an unborn branch, so we mix it up with that case. Something like "111..." for 40 characters would work, though at that point I think just simulating an actual corruption might be less convoluted. -Peff