Lesezeit 1 Minute

git filter-repo

git filter-repo
Photo by Stephen Kraakmo / Unsplash

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-repo

installiert werden kann. Eine einzelne Datei kann dann mit

git filter-repo --path PATH/ZUR/DATEI --invert-paths

aus 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!