Direkt zum Hauptinhalt

git filter-repo

Jeder hat schon einmal versehentlich eine Config-Datei mit sensiblen Daten in ein Repository gepusht, und das ist auch okay! Wichtig ist dabei nur, dass man diese Datei danach wieder spurenlos aus dem Repository entfernt, damit geheime Informationen nicht in die falschen Hände geraten können.

Der Befehl git filter-repo ist ein leistungsstarkes Werkzeug, das verwendet wird, um Git-Repositorys zu bereinigen und zu transformieren. Es ist schneller und flexibler als der frühere git filter-branch. Mit git filter-repo kannst du z. B. sensible Daten aus der Historie entfernen, Branches umbenennen oder die Struktur des Repositorys verändern.

Vorbereitungen

Da git filter-repo nicht standardmäßig bei Git mitgeliefert wird, musst du es zuerst installieren.

    Auf Linux: pacman -S git-filter-repo Auf Windows: Eine Anleitung zur Installation findest du hier.
    Wichtig
      Erstelle ein Backup deines Repositorys: Das Entfernen einer Datei aus der Git-Historie überschreibt Commits und kann nicht rückgängig gemacht werden. Koordiniere dich mit deinen Teamkollegen: Das Umschreiben der Historie erfordert einen Force-Push auf das Remote-Repository, daher ist es wichtig, dass alle anderen Beteiligten dies wissen. Eventuell muss für das betroffene Git-Repository die Branch Protection deaktiviert werden.

      Entfernen einer unerwünschten Datei

        Mit folgendem Befehl, wird die datei config.bak.js aus allen Commits entfernt:
          git filter-repo --path config.bak.js --invert-paths --path config.bak.js: Gibt die Datei an, die entfernt werden soll. --invert-paths: Entfernt die angegebene Datei aus der gesamten Historie. Aktualisiere .gitignore
            Damit die Datei nicht erneut gepusht wird, sollte sie der .gitignore-Datei hinzugefügt werden
            Force-Push zum Remote-Repository
              Da du die Historie überschrieben hast, musst du die Änderungen nun mit einem Force-Push in das Remote-Repository hochladen: git push origin --force --all
              Tags Force-Pushen (falls erforderlich)
                Wenn du Tags hast, die auf Commits zeigen, die die Datei config.bak.js enthalten haben, solltest du auch die Tags force-pushen: git push origin --force --tags