I\'ve rewritten the history of my repository to remove some large FLV files using git filter-branch
. I primarily followed the Github article article on removing sen
Upon cloning a fresh copy of the repository, I was able to run the commands exactly as above, and achieve the desired result: My .git directory was reduced from 205 MB down to 20 MB, and the large FLV files were removed cleanly from the packfile.
The first attempt was also performed on a fresh clone to which I had made no modifications, so I do not have a satisfying explanation for why the FLV files continued to linger inside the packfile.
I originally submitted the below answer, thinking that I'd caused a problem by running git repack -a
before removing .git/refs/original
, causing the original refs to become packed so that when I did remove .git/refs/original
there was no effect; my original refs would still be referencing the large FLV files. This doesn't seem to hold up, however. Running the above commands on a freshly cloned copy of the repository with the addition of git repack -a
immediately after git filter-branch
doesn't seem to affect the outcome - the FLV files are still purged from the packfile. I have no reason to believe this is relevant to the original problem.
Is there some other way that git stores refs, that I don't know about?
There is. It turns out I wasn't entirely truthful about the order of commands as listed above. I had run git repack -a
before running rm -rf .git/refs/original
, and Git had packed the refs away (to be determined where; experimenting now). When I then ran rm -rf .git/refs/original
, nothing was removed. git gc
was unable to shrink my packfile because I did still having lingering references to the old files due to the packed refs/original
refs.