Fehler "Ihr Push würde eine private E-Mail-Adresse veröffentlichen"

108

Ich bin sehr neu in GitHub / VCS .

Wenn ich versuche, mein Projekt auf GitHub freizugeben, wird die folgende Fehlermeldung angezeigt.

    Can't finish GitHub sharing process
    Successfully created project 'myproject' on GitHub, but initial push failed:
    remote: error: GH007: Your push would publish a private email address.
    failed to push some refs to 'https://github.com/me/myproject.git'

Ich habe die Fehlermeldung gegoogelt und keine Treffer erhalten. Ich habe auch nach Stack Exchange gesucht, aber keine Zigarre. Wie kann ich dieses Problem lösen?

user156060
quelle

Antworten:

64

Die gleiche error: GH007Meldung wurde auch angezeigt und ich habe Folgendes verwendet, um das Problem zu beheben.

  1. Gehen Sie zu Festlegen Ihrer Commit-E-Mail-Adresse .
  2. Befolgen Sie die Anweisungen zum Festlegen Ihrer E-Mail-Adresse für jedes Repository auf Ihrem Computer .
  3. Öffnen Sie Ihr GitHub-Konto und gehen Sie zu EinstellungenE-Mails .
  4. Aktivieren Sie das Kontrollkästchen Meine E-Mail-Adresse privat halten .
  5. Deaktivieren Sie das Kontrollkästchen Blockieren der Befehlszeilen- Pushs , die meine E-Mail anzeigen .

Dies kann jedoch Ihre E-Mail-Adresse offen legen.

Sofia-Fernandez
quelle
24
Dies ist eine Lösung, kann jedoch Ihre E-Mail-Adresse offenlegen. Wenn Sie Commits haben, die noch nicht gepusht wurden, müssen Sie die Option Befehlszeilen- Pushs blockieren deaktivieren , die meine E-Mail verfügbar machen . Dann können Sie diese ausstehenden Commits verschieben. Aktualisieren Sie anschließend Ihre E-Mail-Adresse auf die E-Mail-Adresse ohne Antwort und aktivieren Sie die Option Befehlszeilen-Pushs blockieren, durch die meine E-Mail erneut angezeigt wird, um Ihre Adresse privat zu halten.
SvenAelterman
5
@SvenAelterman update your email address to the no-reply email addresswo? In den Github-Einstellungen oder auf Ihrem lokalen Computer irgendwo, wo vermutlich Ihre private E-Mail-Adresse gesendet / verwendet wird? Es scheint mir nicht intuitiv zu sein, dass ich eine von github generierte E-Mail-Adresse kopieren und direkt wieder in github einfügen soll, anstatt nur auf ein Kontrollkästchen zu klicken. Daher gehe ich davon aus, dass das Lesen falsch ist. Oder ist es??
Hippietrail
15
Um die E-Mail für Ihr letztes Commit zu ändern, verwenden Siegit commit --amend --author="Author Name <[email protected]>"
dspacejs
9
Viel besser, hier die Lösung von @Winfried zu verwenden . Ihre E-Mail-Adresse wird nicht öffentlich bekannt gegeben
Connor
8
Einverstanden ist die richtige Antwort @ Winfrieds stackoverflow.com/a/51097104/7872793 .
Shane
227

Wenn Sie die Funktion "Befehlszeilen-Pushs blockieren, die meine E-Mails offenlegen" aktivieren, möchten Sie Git auch so konfigurieren, dass Ihre E-Mail-Adresse ohne Antwort verwendet wird. Keine Sorge - dies hat keinen Einfluss auf Ihr Beitragsdiagramm. Alle Commits werden weiterhin mit Ihrem Konto verknüpft.

  1. Terminal öffnen.

  2. Ändern Sie das aktuelle Arbeitsverzeichnis in das lokale Repository, in dem Sie die E-Mail-Adresse konfigurieren möchten, die Sie Ihren Git-Commits zuordnen.

  3. Finden Sie Ihre GitHub-Adresse in den persönlichen Einstellungen Ihres GitHub → E-Mails . Dies wird in der Beschreibung des Kontrollkästchens Meine E-Mail-Adresse privat halten erwähnt . Normalerweise beginnt es mit einer eindeutigen Kennung und Ihrem Benutzernamen.

  4. Legen Sie eine E-Mail-Adresse in Git fest. Verwenden Sie Ihre von GitHub bereitgestellte E-Mail-Adresse ohne Antwort.

    • Festlegen Ihrer E-Mail-Adresse für jedes Repository auf Ihrem Computer

      git config --global user.email "{ID}+{username}@users.noreply.github.com"
      
    • Festlegen Ihrer E-Mail-Adresse für ein einzelnes Repository

      git config user.email "{ID}+{username}@users.noreply.github.com"
      
  5. Setzen Sie die Autoreninformationen zu Ihrem letzten Commit zurück:

    git commit --amend --reset-author
    

    Wenn Sie mehrere Commits mit Ihrer privaten E-Mail-Adresse haben, lesen Sie diese Antwort .

  6. Jetzt können Sie das Commit mit der Noreply-E-Mail-Adresse verschieben, und zukünftige Commits haben auch die Noreply-E-Mail-Adresse.

    git push
    

Sobald Sie Git konfiguriert haben, verwenden Commits Ihre alternative "Noreply" -E-Mail-Adresse und alle Pushs, die nicht abgelehnt werden.

Winfried
quelle
28
Dies sollte die akzeptierte Antwort sein. @ sofia-fernandez Antwort kann E-Mail-Adressen offenlegen. Gibt es eine Möglichkeit, dies etwas kürzer und lesbarer zu machen? Sie haben zwei Hauptabschnitte, in denen der einzige Unterschied die --globalFlagge ist
Connor
Ich hatte einige Probleme mit der Linux-Oberfläche (habe das SourceTree-Terminal verwendet und es ist einige Zeit her, seit ich VI verwendet habe). Sie können hinzufügen, -m <comment>wenn Sie dies vermeiden möchten.
MikeL
2

Sie haben wahrscheinlich die E-Mail-Datenschutzfunktion von GitHub aktiviert (oder sie ist jetzt standardmäßig aktiviert).

Es wird auf dieser Seite in der GitHub-Hilfe beschrieben .

Kurz gesagt, es gibt einen Schalter, den Sie aktivieren können (der in Ihrem Konto aktiviert ist), der jeden Push verhindert, bei dem der Benutzer Ihre tatsächliche E-Mail-Adresse ist. Sie können stattdessen eine anonymisierte Adresse verwenden (oder die Funktion deaktivieren).

Details zu beiden Optionen finden Sie auf derselben Seite .

Burhan Khalid
quelle
Vielen Dank! Ich habe meine E-Mail-Adressen anonymisiert und das Problem wurde behoben!
Benutzer156060
Die Verwendung der anonymisierten E-Mail-Adresse ist eine gute Lösung. Wenn Sie es vor dem 18. Juli 2017 erstellt haben, möchten Sie es möglicherweise erneut ausführen, um 7 zufällige Ziffern hinzuzufügen.
SvenAelterman
Winfrieds Antwort ist die in sich geschlossene Antwort.
Peter Mortensen
0
  1. Gehe zu Settings
  2. Klicken Sie auf Emails. Scrollen Sie nach unten.Keep my email addresses privateAbschnitt wird da sein.
  3. Notieren Sie sich die dort erwähnte öffentliche E-Mail-ID.
  4. Setzen Sie Ihre lokale globale E-Mail-ID mit der im vorherigen Schritt genannten öffentlichen E-Mail-ID mit dem folgenden Befehl zurück.
$ git config — global user.email "<user_email_id>"
  1. Setzen Sie Ihr letztes lokales Commit zurück, das blockiert wurde.
$ git reset --soft HEAD~1 
  1. Machen Sie ein neues Commit und drücken Sie es. Es wird klappen.
Yuvraj Patil
quelle
-2

Ich hatte das gleiche Problem. Meine Lösung ist im Bild unten:

GitHub-Einstellungen

Peter Doherty
quelle
7
Sie haben festgelegt, Ihre E-Mail zu veröffentlichen, offen für alle Schaber und dergleichen, aber dann verwischen Sie sie dort
draußen
Wie unterscheidet sich dies von der akzeptierten Antwort (fast ein Jahr zuvor veröffentlicht)?
Peter Mortensen