So entfernen Sie persönliche E-Mails aus Git-Commits

So entfernen Sie persönliche E-Mails aus Git-Commits
So entfernen Sie persönliche E-Mails aus Git-Commits

Schützen Sie Ihre E-Mail-Privatsphäre auf GitHub

Die Offenlegung Ihrer persönlichen E-Mail-Adresse in GitHub-Commits kann ein Datenschutzrisiko darstellen, insbesondere wenn Sie an öffentlichen Repositorys arbeiten. Wenn Sie eine zusammengeführte Pull-Anfrage (PR) geöffnet haben und feststellen, dass Ihre persönliche E-Mail-Adresse sichtbar ist, ist es wichtig, Maßnahmen zu ergreifen, um sie auszublenden.

In diesem Leitfaden untersuchen wir verschiedene Methoden, um Ihre E-Mail-Adresse aus der öffentlichen Sicht zu entfernen oder zu verschleiern, nachdem eine PR zusammengeführt wurde. Wir besprechen auch, ob Betreuer die Möglichkeit haben, Commit-Informationen zu ändern und wie Sie Ihre Commits effektiv ändern können.

Befehl Beschreibung
git filter-branch Schreibt den Commit-Verlauf neu, um die Autoren- und Committer-Informationen im Git-Repository zu ändern.
export GIT_AUTHOR_NAME Legt den Autorennamen für die Commits fest, die im Filterzweigvorgang neu geschrieben werden.
export GIT_AUTHOR_EMAIL Legt die E-Mail-Adresse des Autors für die Commits fest, die im Filterzweigvorgang neu geschrieben werden.
wget Lädt Dateien aus dem Internet herunter, die hier zum Herunterladen des BFG Repo-Cleaner-Tools verwendet werden.
bfg-1.13.0.jar Java-Archivdatei für BFG Repo-Cleaner, die den Prozess der Bereinigung des Repository-Verlaufs vereinfacht.
--replace-text BFG Repo-Cleaner-Befehl zum Ersetzen bestimmter Texte (E-Mail-Adressen) im Repository-Verlauf.
git reflog expire Lässt Einträge im Reflog ablaufen, was nützlich ist, um Verweise auf den neu geschriebenen Verlauf zu bereinigen.
git gc --prune=now Führt eine Speicherbereinigung durch und bereinigt sofort nicht erreichbare Objekte, die nach dem Umschreiben des Verlaufs verwendet werden.
git commit --amend Ergänzt den letzten Commit mit neuen Autoreninformationen oder Änderungen am Commit-Inhalt.

Persönliche E-Mails aus Git-Commits entfernen

Die Skripte boten Hilfe beim Entfernen persönlicher E-Mail-Informationen aus Git-Commits, nachdem eine Pull-Anfrage zusammengeführt wurde. Das erste Skript verwendet git filter-branch um den Commit-Verlauf neu zu schreiben. Dieser Befehl durchläuft jedes Commit und prüft, ob die E-Mail-Adresse des Autors oder Committers mit der alten E-Mail übereinstimmt. Wenn dies der Fall ist, wird sie durch die neue, anonymisierte E-Mail ersetzt. Nach dem Umschreiben des Commit-Verlaufs ist ein Force-Push erforderlich, um das Remote-Repository zu aktualisieren. Der export GIT_AUTHOR_EMAIL Und export GIT_COMMITTER_EMAIL Befehle sind hier von entscheidender Bedeutung, um sicherzustellen, dass die neu geschriebenen Commits die richtigen E-Mail-Informationen enthalten.

Das zweite Skript nutzt BFG Repo-Cleaner, was eine einfachere und schnellere Alternative zum Filterzweig ist. Durch die Verwendung der --replace-text Mit dem Befehl kann BFG im gesamten Repository-Verlauf alle Instanzen der alten E-Mail durch die neue ersetzen. Nach dem Ersetzen führt das Skript eine Speicherbereinigung durch git gc --prune=now um eventuelle Restdaten zu bereinigen. Das dritte Skript konzentriert sich auf die Änderung des letzten Commits git commit --amend, was schnelle Änderungen an den Autoreninformationen ermöglicht, ohne den gesamten Verlauf neu zu schreiben.

Verwenden von Git Filter-Branch zum Umschreiben des Commit-Verlaufs

Verwenden von Shell-Scripting mit Git

#!/bin/sh

# Ensure you have a clean working directory
git checkout main

# Rewrite the commit history to change the author email
git filter-branch --env-filter \
'
OLD_EMAIL="my.personal@email.me"
CORRECT_NAME="My Username"
CORRECT_EMAIL="12345678+username@users.noreply.github.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

# Force push the changes to the repository
git push --force --tags origin 'refs/heads/*'

Verwenden Sie BFG Repo-Cleaner zur einfacheren E-Mail-Entfernung

Verwendung von Java mit BFG Repo-Cleaner

# Download BFG Repo-Cleaner
wget https://repo1.maven.org/maven2/com/madgag/bfg/1.13.0/bfg-1.13.0.jar

# Run BFG to replace the old email with the new one
java -jar bfg-1.13.0.jar --replace-text 'my.personal@email.me==12345678+username@users.noreply.github.com' .

# Cleanup and perform garbage collection
git reflog expire --expire=now --all && git gc --prune=now --aggressive

# Push the changes to the remote repository
git push --force

Änderung des letzten Commits zur E-Mail-Änderung

Verwenden der Git-Befehlszeile für einfache Änderungen

# Change the email for the last commit
git commit --amend --author="My Username <12345678+username@users.noreply.github.com>"

# Push the amended commit to the repository
git push --force

Gewährleistung der Privatsphäre nach dem Zusammenführen einer Pull-Anfrage

Ein weiterer zu berücksichtigender Aspekt beim Versuch, persönliche E-Mails aus Git-Commits zu entfernen, ist die Verwendung von GitHub’s personal email settings. Indem Sie Ihren Git-Client so konfigurieren, dass er eine von GitHub bereitgestellte private E-Mail-Adresse verwendet, können Sie vermeiden, dass Ihre echte E-Mail-Adresse bei zukünftigen Commits offengelegt wird. Dies können Sie erreichen, indem Sie Ihre E-Mail-Adresse auf das Format einstellen username@users.noreply.github.com. Darüber hinaus stellt die Aktivierung des E-Mail-Datenschutzes in den GitHub-Einstellungen sicher, dass Ihre private E-Mail-Adresse für webbasierte Git-Vorgänge verwendet wird.

Bei Commits, die bereits gepusht und zusammengeführt wurden, haben die Betreuer von GitHub nur begrenzte Befugnisse, historische Commit-Daten zu ändern. Sie können jedoch helfen, indem sie Repository-Richtlinien durchsetzen, die Mitwirkende dazu ermutigen oder verpflichten, private E-Mails zu verwenden. In extremen Fällen können sie beim Entfernen vertraulicher Daten behilflich sein. Dies erfordert jedoch in der Regel ein Neuschreiben des Verlaufs, was Auswirkungen auf alle Mitwirkenden haben kann.

Häufig gestellte Fragen zum E-Mail-Datenschutz in Git-Commits

  1. Wie kann ich verhindern, dass meine E-Mail-Adresse bei zukünftigen Commits offengelegt wird?
  2. Stellen Sie Ihre E-Mail auf ein username@users.noreply.github.com in Ihrer Git-Konfiguration.
  3. Kann ich die E-Mail-Adresse für bereits gepushte Commits ändern?
  4. Ja, Sie können es verwenden git filter-branch oder BFG Repo-Cleaner um den Commit-Verlauf neu zu schreiben und die E-Mail zu ändern.
  5. Was ist der einfachste Weg, meine E-Mail-Adresse bei zukünftigen Commits zu verbergen?
  6. Konfigurieren Sie Ihr GitHub-Konto für die Verwendung einer privaten E-Mail-Adresse und stellen Sie die E-Mail-Adresse Ihres Git-Clients auf ein username@users.noreply.github.com.
  7. Ändert die Änderung eines Commits seinen Verlauf?
  8. Ja, git commit --amend Ändert den letzten Commit, der erzwungen werden kann, um das Repository zu aktualisieren.
  9. Können Repository-Betreuer meine Commit-Informationen ändern?
  10. Betreuer haben nur begrenzte Möglichkeiten, den Commit-Verlauf zu ändern, können jedoch Datenschutzrichtlinien für zukünftige Commits durchsetzen.
  11. Ist es sicher, den Commit-Verlauf neu zu schreiben?
  12. Das Umschreiben des Verlaufs kann sich auf die Zusammenarbeit auswirken und sollte daher sorgfältig und idealerweise in einer kontrollierten Umgebung durchgeführt werden.
  13. Welche Auswirkungen haben gewaltsame Veränderungen?
  14. Force-Pushing kann den Verlauf überschreiben, was die Mitarbeiter verwirren könnte. Kommunizieren Sie daher vorher klar.
  15. Kann der E-Mail-Datenschutz im gesamten Unternehmen durchgesetzt werden?
  16. Ja, GitHub-Organisationen können Richtlinien festlegen und Tools wie verwenden pre-commit hooks um den E-Mail-Datenschutz zu gewährleisten.
  17. Was sind Pre-Commit-Hooks?
  18. Pre-Commit-Hooks sind Skripte, die ausgeführt werden, bevor ein Commit erstellt wird, um sicherzustellen, dass es bestimmte Kriterien erfüllt, z. B. die Verwendung einer privaten E-Mail-Adresse.

Abschließende Gedanken zum E-Mail-Datenschutz in Git-Commits

Der Schutz Ihrer persönlichen Daten ist von entscheidender Bedeutung, insbesondere wenn Sie Beiträge zu öffentlichen Repositories leisten. Indem Sie Ihre Git-Einstellungen so konfigurieren, dass eine private Adresse verwendet wird, und Tools wie verwenden git filter-branch Und BFG Repo-Cleanerkönnen Sie personenbezogene Daten effektiv aus dem Commit-Verlauf entfernen. Während Repository-Betreuer nur begrenzte Befugnisse haben, Commit-Informationen zu ändern, können sie Datenschutzpraktiken unterstützen. Stellen Sie immer sicher, dass Sie alle Umschreibungen des Verlaufs Ihrem Team mitteilen, um Verwirrung zu vermeiden. Mit diesen Methoden können Sie Ihre Privatsphäre schützen, während Sie zu Open-Source-Projekten beitragen.