Ich habe versehentlich eine riesige Binärdatei mit meinem allerletzten Commit zu einem Git-Repository hinzugefügt, committed und gepusht.
Wie kann ich Git dazu bringen, das/die Objekt(e) zu entfernen, das/die für diesen Commit erstellt wurde(n), damit meine .git
Verzeichnis wieder auf eine vernünftige Größe schrumpft?
bearbeiten : Danke für Ihre Antworten; ich habe mehrere Lösungen ausprobiert. Keine hat funktioniert. Zum Beispiel hat die von GitHub die Dateien aus dem Verlauf entfernt, aber die .git
Die Größe des Verzeichnisses hat sich nicht verringert:
$ BADFILES=$(find test_data -type f -exec echo -n "'{}' " \;)
$ git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch $BADFILES" HEAD
Rewrite 14ed3f41474f0a2f624a440e5a106c2768edb67b (66/66)
rm 'test_data/images/001.jpg'
[...snip...]
rm 'test_data/images/281.jpg'
Ref 'refs/heads/master' was rewritten
$ git log -p # looks nice
$ rm -rf .git/refs/original/
$ git reflog expire --all
$ git gc --aggressive --prune
Counting objects: 625, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (598/598), done.
Writing objects: 100% (625/625), done.
Total 625 (delta 351), reused 0 (delta 0)
$ du -hs .git
174M .git
$ # still 175 MB :-(