28 May 2024
git: Datei aus einem Repository entfernen
Wie kann man eine Datei aus einem Git-Repository löschen?
Sie können das mit git rm tun.
git rm unwanted-file.txt
Dieser Befehl löscht die Datei und bereitet ihre Löschung vor, damit sie im nächsten Commit enthalten sein kann. Wenn wir ein Verzeichnis entfernen möchtenen, müssen wir das Flag -r (rekursiv) verwenden, wie beim Standardbefehl rm.
Beachten Sie, dass alle auf diese Weise entfernten Dateien in vorherigen Commits weiterhin sichtbar sind. Wenn die zu entfernende Datei vertrauliche Inhalte enthält, müssen wir entweder ein neues Git-Repository mit einem neuen Verlauf erstellen oder den Verlauf unseres aktuellen Repositorys mit git filter-branch neu schreiben:
git filter-branch -f --index-filter 'git rm -rf --cached --ignore-unmatch unwanted-file.txt' HEAD
Rewrite 6ed1...fb58 (3/12) (0 seconds passed, remaining 0 predicted) rm 'unwanted-file.txt'
[...]
Beachten Sie, dass das Neuschreiben des Commit-Verlaufs auf diese Weise gefährlich ist und Ihr Repository dauerhaft verändert. Darüber hinaus ist git filter-branch ein langsamer Vorgang, insbesondere bei großen Repositories mit vielen Commits. überprüfen Sie vor dem Ausführen dieses Befehls noch einmal, ob der Name der zu entfernenden Datei korrekt ist.
Nachdem unser Commit-Verlauf neu geschrieben wurde, müssen wir die Änderungen mit einem Befehl wie dem folgenden zwangsweise in Remote-Repositories übertragen:
git push --force
[...]
remote: . Processing 1 references
remote: Processed 1 references in total
+ 3147f29...52aebb6 main -> main (forced update)