Wie kann ich mit Git unter Windows sensible Daten aus einem Repository entfernen?

Melden
  1. Vorbereitung und Sicherheitsüberlegungen
  2. Verwendung von Git-Befehlen zur Entfernung sensibler Daten
  3. Beispiel mit BFG Repo-Cleaner
  4. Alternative: Nutzung von git filter-repo
  5. Wichtige Nacharbeiten
  6. Fazit

Das Entfernen sensibler Daten aus einem Git-Repository erfordert nicht nur das Löschen der Dateien im aktuellen Stand, sondern auch das vollständige Entfernen aller früheren Versionen, in denen diese Daten möglicherweise enthalten sind. Git speichert den gesamten Verlauf, sodass ein einfaches Löschen und Commiten nicht ausreicht. Unter Windows gibt es mehrere Methodiken, um diese Aufgabe sorgfältig durchzuführen.

Vorbereitung und Sicherheitsüberlegungen

Bevor Sie Änderungen am Repository-Verlauf vornehmen, sollten Sie sicherstellen, dass Sie eine Sicherungskopie des gesamten Repositories machen. Außerdem sollten alle Teammitglieder informiert sein, dass der Verlauf neu geschrieben wird, da dies das Repository und alle Klone betrifft. Nach einer solchen Änderung müssen alle Nutzer ihre lokalen Klone entsprechend neu synchronisieren.

Verwendung von Git-Befehlen zur Entfernung sensibler Daten

Eine weit verbreitete Methode zur Bereinigung der Historie ist der Einsatz von Tools wie git filter-branch, BFG Repo-Cleaner oder neuerdings git filter-repo. Während git filter-branch direkt in Git integriert ist, ist es relativ langsam und komplex. BFG ist ein eigenständiges Java-Tool, das speziell für das Entfernen großer Dateien und sensibler Daten aus Repositories entwickelt wurde. git filter-repo gilt als moderner Ersatz für git filter-branch und ist schneller und weniger fehleranfällig.

Beispiel mit BFG Repo-Cleaner

Um BFG zu verwenden, müssen Sie zunächst Java auf Ihrem Windows-System installiert haben. Laden Sie dann das BFG-Tool von der offiziellen Seite herunter. Anschließend klonen Sie Ihr Repository als "bare" Klon, um eine saubere Ausgangsbasis zu haben. In der Eingabeaufforderung führen Sie Befehle wie bfg --delete-files YOUR_SECRET_FILE aus, um gezielt Dateien zu entfernen. Danach führen Sie git reflog expire --expire=now --all und git gc --prune=now --aggressive aus, um die alten Objekte zu löschen und den Speicher zu bereinigen.

Alternative: Nutzung von git filter-repo

Für git filter-repo muss Python auf dem Windows-Rechner installiert sein. Danach können Sie das Tool per pip install git-filter-repo installieren. Um sensible Dateien zu entfernen, verwenden Sie z.B. git filter-repo --path YOUR_SECRET_FILE --invert-paths, was alle Commits bereinigt, die besagte Datei enthalten. Auch hier sollten anschließend Reflog und Garbage Collection ausgeführt werden, wie zuvor beschrieben.

Wichtige Nacharbeiten

Nachdem der Verlauf bereinigt ist, müssen Sie das entfernte Repository normalerweise mit git push --force oder git push --force-with-lease auf den Remote-Server übertragen. Dadurch kann es jedoch zu Problemen bei anderen Mitwirkenden kommen, die ihre lokalen Repositories neu klonen oder synchronisieren müssen.

Zudem sollten Sie etwaige Zugangsdaten oder Passwörter, die möglicherweise geleakt wurden, unverzüglich ändern, da eine vollständige Entfernung aus der Historie nicht immer garantiert, dass niemand Zugriff auf die Daten hatte.

Fazit

Das Entfernen sensibler Daten aus einem Git-Repository unter Windows ist möglich, erfordert jedoch sorgfältiges Vorgehen und den Einsatz spezieller Tools wie BFG Repo-Cleaner oder git filter-repo. Die Historie muss neu geschrieben und das bereinigte Repository neu verteilt werden. Nur so können sensible Informationen sicher entfernt werden.

0
0 Kommentare