Löschen von Dateien aus zu großen GitLab Projekten
Vorbereitungen
Für diese Anleitung muss ein Git Client auf dem Rechner installiert, sowie ein Projekt geklont (z. B. mit TortoiseGit) sein. Der Git Client beinhaltet unter Windows auch eine Git Shell, die für diese Anleitung benötigt wird. Um die Git Shell zu starten, muss im Explorer nach einem Rechtsklick auf den Ordner, der das Projekt enthält, "Git Bash here" ausgewählt werden. Daraufhin öffnet sich die Git Bash mit gesetztem Pfad.
dem Ausführen der unteren Befehle sollte noch die aktuelle Größe des Repos abgefragt werden, um einen einfachen vorher/nachher Vergleich machen zu können. Dazu hilft folgender Befehl:
git count-objects -v |
Aufräumen des Repos
Für den folgenden Befehl muss der Pfad zur zu löschenden Datei bekannt sein. Diesen findet man, wenn man in GitLab innerhalb des entsprechenden Commits sucht, mit dem die zu große(n) Datei(en) zum Repo hinzugefügt wurde(n). Ist dieser Pfad bekannt, müssen folgende Befehle verwendet werden:
git filter-branch --tag-name-filter cat --index-filter 'git rm -r --cached --ignore-unmatch /pfad/zur/datei' --prune-empty -f -- --all rm -rf .git/refs/original/ git reflog expire --expire=now --all git gc --prune=now git gc --aggressive --prune=now |
Mit einem erneuten
git count-objects -v |
ist zu überprüfen, ob der Platzverbrauch kleiner geworden ist. Ist dies der Fall, kann das Repo nun mit einem
git push origin --force |
auf den Server übertragen werden. Funktioniert dies in der Konsole nicht, weil diese nicht auf Pageant zugreifen kann, kann auch per TortoiseGit gepusht werden, hier einfach im Git Sync Dialog vor dem Push den Haken "Force" aktivieren.
Nun sollte GitLab in der Repo-Übersicht auch die aktualisierte Größe anzeigen und das Projekt nicht mehr über Quota sein.
Sollte nach dieser Operation das Projekt nicht kleiner, sondern evtl. sogar größer geworden sein, bitte beim IT-SD melden.