git filter-repo
Ich hatte ein riesiges git-Archiv, weil sehr großen Datenordner mit aufgenommen worden waren. Die wollte ich deshalb ganz gerne los werden und ich konnte herausfinden, dass dies tatsächlich möglich ist. Dazu wird ein Zusatzmodul filter-repo für git benötigt, das unter Ubuntu oder Debian per
sudo apt install git-filter-repoinstalliert werden kann. Eine einzelne Datei kann dann mit
git filter-repo --path PATH/ZUR/DATEI --invert-pathsaus dem Archiv komplett entfernt werden. Ein ganzer Ordner kann per
git filter-repo --path DATENORDNER/ --invert-paths
entfernt werden. Dateien können auch anhand der Dateigröße entfernt werden. Das ist praktisch, wenn man versehentlich eine große Datei eingecheckt hat.
git filter-repo --strip-blobs-bigger-than 10M
Es können auch z.B. alle Wav-Dateien aus dem Archiv entfernt werden:
git filter-repo --path-glob "*.wav" --invert-paths
Nach der Bereinigung müssen alle Objekte neu gepackt werden:
git reflog expire --expire=now --all
git gc --prune=now --aggressive
Anschließend sollten natürlich auch Remote-Repositorys aktualisiert werden:
git push --force --all
git push --force --tags
Et voilà: Die Datenlast ist weg!