Ich habe erst kürzlich eine Datei .gitignore
hinzugefügt, um bestimmte Datendateien in einem Unterverzeichnis von mir zu ignorieren. Ich würde wirklich gern in der Zeit zurückgehen und sie auch von früheren Commits / Geschichte entfernen.
Wird das leicht erreicht? Wo / wie soll ich anfangen?
Dies wird ein zweistufiges Verfahren sein:
Damit dies funktioniert, müssen die frühen Commits Ihre .gitignore
Datei haben. Also müssen Sie:
git checkout -b temp $(git rev-list HEAD | tail -1)
.gitignore
hinzu. git commit --amend
Jetzt können Sie diese Dateien mit diesem Befehl automatisch aus allen Zweigen entfernen:
git filter-branch --tree-filter 'git clean -f -X' -- --all
Dadurch werden alle Zweige neu geschrieben, um ignorierte Dateien zu entfernen. Abhängig von der Größe Ihres Repository kann dies eine Weile dauern.
Siehe Entfernen der Datei aus jedem Commit Abschnitt. Es ist genau dein Fall.
Aber Vorsicht, denn diese Funktion ändert jedes Geschichtsumschreiben . Wenn Sie also ein öffentliches Repository haben und jemand damit arbeiten könnte, würde dies zu Problemen führen.
git filter-branch ist eine mögliche Lösung. Stellen Sie sicher, dass Sie die Auswirkungen verstehen, bevor Sie sie nutzen, da die Änderungen permanent sind. Sie werden nicht in der Lage sein, Ihren gefilterten Zweig mit dem alten zusammenzuführen.
git Filter-Zweig --index-filter 'git rm --cached --ignore-unmatch Dateiname' HEAD
Vertausche den Dateinamen für die spezifische Datei, die du entfernen möchtest.