Damien Robert writes: > My situation: coworkers push big files by mistake, I don't want to rewrite > history because they are not too well versed with git, but I want to keep > *my* repo clean. > > Partial solution: > - identify the large blobs (easy) > - write a replace ref (easy): > $ git replace b5f74037bb91 $(git hash-object -w -t blob /dev/null) > and replace the file (if it is still in the repo) by an empty file. > > Now the pain points start: > - first the index does not handle replace (I think), so the replaced file > appear as changed in git status, even through eg git diff shows nothing. Instead of replacing the blob with an empty file, why not replace the tree that references it with one that does not? That way you won't have the file in your checkout at all, and the index won't list it so status won't show it as changed.