Gibt Git meine E-Mail-Adresse öffentlich bekannt?

95

Die Anleitungen, die ich bisher auf Git gelesen habe, besagen, dass ich in die Konfiguration gehen und meinen Namen und meine E-Mail-Adresse angeben sollte. Sie arbeiten nicht aus; sie sagen nur, es zu tun.

Warum braucht Git meine E-Mail-Adresse? Und was noch wichtiger ist: Wenn ich mein Repo öffentlich zugänglich mache, beispielsweise über GitHub, ist meine E-Mail-Adresse dann für alle sichtbar (einschließlich Spambots)?

Joe White
quelle
19
Ich denke, dies ist eine gültige (wenn auch nicht technische) Frage zu einem programmierbezogenen Tool - wie viele andere Fragen zu SO - und verdient es nicht, als "nicht programmierungsbezogen" herabgestuft zu werden.
Jonik
3
Mit GitHub now (August 2013) können Sie Ihre E-Mail-Adresse privat halten! Siehe meine Antwort unten . Sie können auch eine gefälschte E-Mail-Adresse registrieren, um sie nicht in den Commits zu verwenden, die Sie an GitHub senden.
VonC

Antworten:

36

Git verwendet Ihre E-Mail-Adresse, um Sie zu identifizieren und andere Aufgaben zu erledigen (z. B. ein Tag mit einem GPG-Schlüssel zu signieren). Ihre E-Mail-Adresse wird zusammen mit dem von Ihnen angegebenen Namen als Teil Ihrer Identität in Festschreibungsprotokolle usw. eingebettet. Das Feld "Autor" in einem Festschreibungsprotokoll wird beispielsweise wie folgt angezeigt:

Author: Joe White <[email protected]>

Die Informationen stehen also jedem zur Verfügung, der eine Kopie des Repos besitzt, da sie als Kennung fungieren.

Ihre E-Mail-Adresse ist für Spambots wahrscheinlich nicht sichtbar, es sei denn, Sie verwenden Gitweb oder einen Dienst wie GitHub, um Ihr Repo über eine Weboberfläche verfügbar zu machen (dies reicht jedoch nicht aus, um es ins Internet zu stellen).

Ich nehme an, Sie könnten eine gefälschte E-Mail-Adresse eingeben oder eine leere Zeichenfolge oder ein Leerzeichen oder etwas anderes verwenden (ich glaube nicht, dass Git das Format oder die Gültigkeit der E-Mail überprüft), aber die E-Mail ist nützlich, wenn jemand, der das Repo klont, senden muss Sie einen Patch oder kontaktieren Sie in irgendeiner Weise.

Mipadi
quelle
3
Vermutlich sollten github, gitweb et al. Eine Option zum Verschleiern von E-Mail-Adressen haben, genau wie es die Betrachter von Mailinglisten-Archiven tun. Obwohl es sich nur um eine gültige E-Mail-Adresse handelt, werden Tools wie "git send-email" unter der Annahme geschrieben, dass dies der Fall ist (z. B. automatisch cc'ing von Patch-Autoren)
araqnid
2
Sie können git so konfigurieren, dass eine andere Identität als die von user.name und user.email für den GPG-Schlüssel zum Signieren von Tags angegebene verwendet wird
Jakub Narębski
Ältere zentralisierte Versionskontrollsysteme verwenden "Benutzername", um den Autor eines Commits (einer Änderung) zu identifizieren. Name + E-Mail ist eine gute Identität; Es muss jedoch keine echte E-Mail sein.
Jakub Narębski
3
GitHub hat ein Update, wo Sie eine gefälschte E-Mail-Adresse verwenden können, die mit Ihrem Profil verknüpft ist - stackoverflow.com/a/20533922/2158473
RyPeck
GitHub kann sich sogar an PR-Commits in einem gelöschten Zweig erinnern, die zusammengeführt wurden (und daher die E-Mail / den Namen nirgendwo im Repo außer auf der PR-Webseite offenlegen). Wenn der PR zusammengeführt wurde, weiß ich nicht, wie ich die Commits rückgängig machen kann (wenn er noch offen ist, können Sie ihn neu starten und erzwingen).
DA
43

Update April 2017

Siehe " Private E-Mails, jetzt privater "

GitHub unterstützt seit einiger Zeit die Verwendung einer alternativen "Noreply" -E-Mail-Adresse, um webbasierte Commits zu erstellen. Ab heute gibt es eine andere Möglichkeit, um sicherzustellen, dass Sie Ihre E-Mail-Adresse nicht versehentlich veröffentlichen, wenn Sie Commits über die Befehlszeile an GitHub senden.

Git verwendet Ihre E-Mail-Adresse, um Ihren Namen mit den von Ihnen verfassten Commits zu verknüpfen. Sobald Sie Ihre Commits in ein öffentliches Repository auf GitHub übertragen, werden auch die Metadaten der Autorenschaft veröffentlicht.

Wenn Sie sicherstellen möchten, dass Sie Ihre E-Mail-Adresse nicht versehentlich veröffentlichen, aktivieren Sie in Ihren E-Mail-Einstellungen einfach die Optionen "Meine E-Mail-Adresse privat halten" und "Befehlszeilen-Pushs blockieren, die meine E- Mail verfügbar machen" .

https://cloud.githubusercontent.com/assets/33750/24673856/a995cb74-1947-11e7-8653-65bc604a4101.png

Hinweis: wie unten kommentiert von OREV , Git aussetzen nichts. GitHub , ein Hosting- Service für Git-Repositories , könnte.
Der Ort, an dem Sie Ihr lokales Git-Repo pushen, kann Metadaten verfügbar machen.


Hinweis: Ab dem 9. August 2013 können Sie Ihre E-Mail-Adresse jetzt privat halten !

Dies gilt jedoch für webbasierte GitHub-Vorgänge: Die Commits enthalten weiterhin eine E-Mail-Adresse, die mit der für Ihr GitHub-Konto verwendeten identisch sein kann oder nicht.
Siehe unten, um auch diese (Git Commit) E-Mail zu "maskieren".

Bis heute haben alle webbasierten GitHub Flow Ihre primäre E-Mail-Adresse verwendet. Dies umfasst das Erstellen, Bearbeiten und Löschen von Dateien sowie das Zusammenführen von Pull-Anforderungen.

Jetzt können Sie Ihre E-Mail-Adresse privat halten. Besuchen Sie dazu Ihre E-Mail-Einstellungsseite:

Email Einstellungen

Wenn diese Option aktiviert ist, verwenden webbasierte Vorgänge eine E-Mail-Adresse unter [email protected].


Wenn Sie Ihre von Ihrem Computer erstellten E-Mails ausblenden möchten, können Sie mit GitHub jetzt verschiedene E-Mail-Adressen registrieren : siehe dieses Handbuch .

Sie müssen Ihre (gefälschte) E-Mail noch in Ihrem lokalen Repo konfigurieren, bevor Sie zu GitHub zurückkehren, wenn Sie möchten, dass Ihre Commits wiedergegeben werden

git config --global user.email "[email protected]" # Set email to slightly changed value
git config --global user.email # Verify the setting
# [email protected]

Dann:

  • Gehen Sie zum Einstellungsmenü E-Mails
  • Klicken Sie auf "Weitere E-Mail-Adresse hinzufügen".
  • Geben Sie die gefälschte E-Mail ein (z. B. " [email protected]") und klicken Sie auf "Hinzufügen".

Neue E-Mail-Adresse hinzufügen

Beachten Sie, dass:

Diese Einstellung wirkt sich nur auf zukünftige Commits aus .
Wenn Sie Ihre echte E-Mail-Adresse aus dem Commit-Verlauf Ihres Repositorys löschen möchten, müssen Sie Ihre alten Commits neu schreiben. Der einfachste Weg, dies zu tun, ist:

Verwenden Sie git filter-branchdiese Option, um den Repository-Verlauf neu zu schreiben und den neuen Verlauf zwangsweise nach oben zu verschieben.

VonC
quelle
1
Dies ist nützlich zu wissen, aber ich denke, es sollte sehr klar sein, dass GitHub nicht dasselbe ist a git. gitist ein Open Source-Tool zur allgemeinen Versionskontrolle, während GitHub eine Website ist, auf der Sie ein gitRepository veröffentlichen können. GitHub hat nicht erstellt git, sie haben einfach eine sehr schöne Website erstellt, die gut damit funktioniert.
Orev
@orev Guter Punkt. Ich habe diese Warnung in die Antwort aufgenommen.
VonC
10

GitHub hat einen Hilfeartikel mit dem Titel " Halten Sie Ihre E-Mail-Adresse privat" , der beginnt:

Git erfordert, dass Sie sich identifizieren, um Commits zu tätigen. Sie können Ihre Kontaktinformationen jedoch mithilfe einer gefälschten Adresse ausblenden. Git selbst ist es egal, ob die E-Mail gültig ist.

Gut zu wissen: Obwohl es Git egal ist, akzeptieren einige Projekte möglicherweise keine Beiträge von Ihnen, wenn Ihre Commits keine gültige E-Mail-Adresse haben. Sie sollten daher die Beitragsrichtlinien Ihres Projekts überprüfen, bevor Sie diese Anweisungen befolgen.

GitHub erhält nicht viele Berichte über das Versenden von Spam an Git-Commit-E-Mail-Adressen. Wenn Sie sich darüber Sorgen machen, sollte Ihnen dieses Handbuch dabei helfen, diese Bedenken auszuräumen.

Das Handbuch enthält Schritte zum Konfigurieren von Git und GitHub für die Verwendung einer gefälschten Adresse.

Hugo
quelle
Ich bekomme viel Spam an meine GitHub-Commit-E-Mail-Adresse. Ich benutze dafür einen dedizierten.
Mitar
6

Ja, die obigen Antworten sind korrekt. Wenn Sie jedoch normalerweise für alle Ihre Projekte dieselbe E-Mail-Adresse haben möchten, verwenden Sie den folgenden Befehl:

git config --global user.email "[email protected]"

Sie können die .gitconfig-Datei auch in Ihrem Home-Verzeichnis im Benutzerbereich bearbeiten.

Sie können eine andere E-Mail-Adresse für ein bestimmtes Projekt angeben, indem Sie denselben Befehl ohne die globale Option ausführen.

Außerdem schlage ich vor, dass Sie Ihre E-Mail verschleiern können, wenn die Einreichungen in einen öffentlichen Bereich gehen:

briancolfer(at)comcast.net

Als Beispiel.

bcolfer
quelle
5

Millionen von GitHub-Commit-E-Mails sind durchgesickert

https://github.com/cirosantilli/all-github-commit-emails aus GitHub-Archiven extrahiert https://www.githubarchive.org Exporte verpflichten sich.

GitHub Archive ruft Daten von der Ereignis-API von GitHub ab: https://developer.github.com/v3/activity/events/types/#pushevent und exportiert sie stündlich in Google BigQuery, was das Abfragen erleichtert.

E-Mails werden zu Ereignissen des Typs angezeigt PushEvent.

Ich glaube nicht, dass Commit-E-Mails irgendwo auf der Weboberfläche von GitHub angezeigt werden, daher ist jede Sammlung durch die Begrenzung der API-Rate begrenzt. TODO: Wie viel Zeit, um 1 Million E-Mails über die API von Grund auf neu zu sammeln?

Praktischer Weg, um eine Commit-E-Mail von jemandem mit der API zu erhalten

ghmail() { curl "https://api.github.com/users/$1/events/public" | grep email; }
ghmail cirosantilli

oder besuchen Sie: https://api.github.com/users/cirosantilli/events/public

Es gibt auch:

Die Git-Commit-Datenstruktur verfügt über ein explizites E-Mail-Feld für Autor und Committer

Dargestellt unter: Wie lautet das Dateiformat einer Git-Commit-Objektdatenstruktur?

Daher ist es klar, dass diese Informationen standardmäßig zu Commits hinzugefügt werden.

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
quelle
4

Ja, Ihre E-Mail-Adresse (wie in angegeben git config user.email) wird in Webschnittstellen wie GitWeb angezeigt. Außerdem kann jeder Ihre E-Mail-Adresse durch Klonen Ihres Repositorys erfahren, obwohl dies wahrscheinlich noch weit über Spambots hinausgeht. Niemand zwingt Sie jedoch, eine echte E-Mail-Adresse zu verwenden. Git legt automatisch eine erstellte E-Mail-Adresse fest, wenn keine angegeben wird. Auf meinem Computer ohne user.emailzeigt es Commits von "Foo <foo @ Tochter. (Keine)>".

Bombe
quelle
4

Sie können den Namen des Autors, die E-Mail-Adresse usw. rückwirkend ändern. Beachten Sie, dass das Folgende Ihren Verlauf beschädigen kann.

#!/bin/sh

git filter-branch --env-filter '

an="$GIT_AUTHOR_NAME"
am="$GIT_AUTHOR_EMAIL"
cn="$GIT_COMMITTER_NAME"
cm="$GIT_COMMITTER_EMAIL"

if [ "$GIT_COMMITTER_EMAIL" = "[email protected]" ]
then
    cn="Your New Committer Name"
    cm="Your New Committer Email"
fi
if [ "$GIT_AUTHOR_EMAIL" = "[email protected]" ]
then
    an="Your New Author Name"
    am="Your New Author Email"
fi

export GIT_AUTHOR_NAME="$an"
export GIT_AUTHOR_EMAIL="$am"
export GIT_COMMITTER_NAME="$cn"
export GIT_COMMITTER_EMAIL="$cm"
'

Von hier genommen

Eierbeine
quelle
4

GitHub hat einen Hilfeabschnitt zum Festlegen Ihrer E-Mail-Adresse.

Im Einzelnen heißt es:

Gut zu wissen: Sie müssen keine gültige E-Mail-Adresse angeben. Wenn Sie über Spam besorgt sind, verwenden Sie stattdessen eine gefälschte E-Mail. [email protected] ist eine gängige Praxis.

g_fred
quelle