Git: "Bitte sag mir wer du bist" Fehler


226

Ich habe App-Server, die ich mithilfe von Chef + einigen Ad-hoc-Bash-Skripten zusammen boote. Das Problem ist, wenn ich ein Update auf einem dieser App-Server ausführen möchte, erhalte ich:

19:00:28: *** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

Muss ich dies wirklich so einstellen, dass es git pull origin masterjedes Mal, wenn ich einen App-Server aktualisiere, einfach ist ? Gibt es eine Möglichkeit, dieses Verhalten zu überschreiben, damit kein Fehler auftritt, wenn Name und E-Mail-Adresse nicht festgelegt sind?


3
Nach dem, was mir begegnet ist, sehe ich kein Problem damit, nur Ihren Namen und Ihre E-Mail-Adresse hinzuzufügen, selbst wenn es sich nur um gefälschte Namen und E-Mails handelt.
Sean

10
Ja, Sie müssen diese festlegen, wenn das "Einfache" git pullein Commit erstellen soll, weil es beispielsweise eine Zusammenführung durchgeführt hat.
Fork0

1
Sie beschreiben das Szenario der Einwegbereitstellung. Ich würde die Anmeldeinformationen nicht hinzufügen, um das Zusammenführen von Commits zu vermeiden. Ja, Sie werden das Problem mit diesem Fehler sehen, aber dies bedeutet, dass jemand in der Produktion herumstochert und Dateien ändert, die die Zusammenführung manuell auslösen.
Alex Skrypnyk

Antworten:


249

Ich verbringe viele Stunden damit, wenn ich PHP-Skript aufrufe, um Git zu initiieren und festzuschreiben. Und ich fand, dass der Arbeitsablauf sein sollte:

1.git init
2.git config user.name "someone"
3.git config user.email "someone@someplace.com"
4.git add *
5.git commit -m "some init msg"

Wenn Sie [23] und 1 tauschen, funktioniert die Konfiguration überhaupt nicht.

Ich wünschte, dies würde etwas helfen.


Dies ist die richtige Vorgehensweise, um ein Git-Repository zu initiieren. Aber für die Aktualisierung einer Repo @ gfxmonk-Lösung ist besser
Davisein

Können Sie erklären, wie es funktioniert und warum es vorher einen Fehler gab?
Chinmaya B

1
Sie können Befehle --globalumschalten git configund dies einmal für Ihr Betriebssystemkonto tun. Danach werden die Schritte 2-3 nicht mehr benötigt.
X-Yuri

50

Anstatt a zu tun git pull, können Sie Folgendes tun:

git fetch
git reset --hard origin/master

In keinem Fall müssen Sie Ihren Git-Benutzernamen / Ihre E-Mail-Adresse konfigurieren.

Dadurch werden alle nicht festgeschriebenen lokalen Änderungen / Festschreibungen zerstört, und Ihr HEAD zeigt auf ein Festschreiben (kein Zweig). Beides sollte jedoch für einen App-Server kein Problem sein, da Sie keine lokalen Änderungen vornehmen oder sich auf dieses Repository festlegen sollten.


Die automatische Ausführung von Git Pull ist in dieser Situation gefährlich. Es ist besser, einen Reset durchzuführen.
Davisein

Wäre es nicht besser zu benutzen git fetch && git reset --hard HEAD?
Jacoor

@jacoor nein: git reset --hard HEADwirft nur Ihre uneingeschränkten Änderungen weg, es ändert nichts daran, auf welchem ​​Commit Ihr Arbeitsbereich basiert (da Sie per Definition bereits auf HEAD sind)
gfxmonk

33

Wenn Sie Sourcetree verwenden: Repository -> Repository-Einstellungen -> Erweitert -> Deaktivieren Sie das Kontrollkästchen "Globale Benutzereinstellungen verwenden"

hat super für mich funktioniert.


in meinem Fall musste ich es noch einmal überprüfen, aber trotzdem! Vielen Dank für Ihre Hilfe
Karoly

32

es funktioniert für mich, versuchen Sie dies .. Sie müssen Ihr Terminal mit Fernzugriff konfigurieren.

     git config --global user.name "abc"
     git config --global user.email "abc@example.com"

10

Aktualisieren Sie Ihren Bootstrap-Prozess, um einen ${HOME}/.gitconfigmit dem richtigen Inhalt zu erstellen oder einen vorhandenen von irgendwoher zu kopieren.


9
git config user.email "insert github email here"
git config user.name "insert github real name here"

Das hat bei mir super funktioniert.


4

Das gleiche Problem trat bei mir auf und wurde durch Hinzufügen von Standardeinstellungen für Name und E-Mail-Repository behoben.

Wie Doron vorschlug -

Wenn Sie Sourcetree verwenden: Repository -> Repository-Einstellungen -> Erweitert -> Deaktivieren Sie das Kontrollkästchen "Globale Benutzereinstellungen verwenden".

Fügen Sie den Standardnamen und die E-Mail-Adresse hinzu.


4

In meinem Fall fehlte mir "e" im Wort "E-Mail", wie Chad oben angegeben hat, aber ich sehe, dass dies bei Ihnen nicht der Fall ist. Bitte drücken Sie den folgenden Befehl, um zu sehen, ob alles wie erwartet gezogen wird.

git config -l

4

Sie müssen Ihre E-Mail so schreiben

 git config --global user.email "you@example.com"

Dann: Schreiben Sie den Benutzernamen

 git config --global user.name "Your Name"

Danach erscheint das Poupup-Fenster

Schreiben Sie USERNAME & EMAIL für das Konto, das Sie beitragen möchten


3

Für mich war das Problem die Netzwerkverbindung. Sobald ich mich wieder mit meinem WLAN verbunden hatte, konnte es die Details abrufen und ohne Probleme festschreiben.


2

Muss ich dies wirklich einstellen, um jedes Mal, wenn ich einen App-Server aktualisiere, einen einfachen Git-Pull-Origin-Master auszuführen? Gibt es eine Möglichkeit, dieses Verhalten zu überschreiben, damit kein Fehler auftritt, wenn Name und E-Mail-Adresse nicht festgelegt sind?

Es wird nur einmal gefragt und sichergestellt, dass der öffentliche rsa-Schlüssel für diesen Computer über Ihr Github-Konto hinzugefügt wird, an das Sie eine Festschreibungsanforderung festschreiben oder übergeben möchten.

Weitere Informationen hierzu finden Sie hier


1
Die Verbindung ist unterbrochen
Alice Schwarze

2

Ich hatte dies als fehlerhafte Fehlermeldung: Funktionierte einwandfrei in
git pullder cmd-Zeile,
git pulldie in einem Perl-CGI-Prozess (einem Webhook zur automatischen Bereitstellung von Github) mit dem oben genannten Fehler fehlgeschlagen ist.

Dabei git statuswird eine kollidierende Datei identifiziert. Durch das Sortieren wurde das Problem behoben.

Das Problem trat später erneut auf, als ich einige Konfigurationseinstellungen änderte.

Dieses Mal wurde es durch Festlegen von $ HOME- und $ USER-Umgebungsvariablen behoben (sind in einem CGI-Prozess standardmäßig nicht festgelegt).


2

Schauen Sie sich die Konfigurationsdatei an.

Repository> Repository-Einstellungen> Konfigurationsdatei bearbeiten.

Überprüfen Sie, ob der [user]Abschnitt vorhanden ist. Wenn der Benutzerabschnitt fehlt, fügen Sie ihn hinzu.

Beispiel:

[user]
name = "your name"
email = "your email"

2

Ich benutze Heroku CLI 1. muss alle Benutzernamen und Benutzer-E-Mails verwenden

$ git config --global user.email .login email.

$ git config --global user.name .heroku name.

  1. Git Pull [Git URL]
  2. git init
  3. git add *

    5 git commit -m "nach Konfiguration Benutzername, Benutzer-E-Mail"

  4. Git Push Heroku Meister


2

Ich benutze Jenkins und bin auf dieses Problem gestoßen, als ich versucht habe, eine Veröffentlichung durchzuführen (für die ein Git-Commit erforderlich ist). Um die Probleme zu beheben, musste ich einen benutzerdefinierten Benutzernamen / eine E-Mail-Adresse hinzufügen (siehe Abbildung). Benutzerdefinierter Benutzername / E-Mail-AdresseDadurch wurde sichergestellt, dass beim Auschecken des Codes der Name / die E-Mail-Adresse meines Build-Benutzers bei der Ausführung der Version verwendet wurde. Beachten Sie, dass diese Konfiguration in der Projektkonfiguration der Jenkins Multibranch Pipeline verfügbar ist.


2

git pullsollte dies nicht erfordern. Wenn der Pull jedoch einen Zusammenführungskonflikt verursacht, scheint dies nicht erforderlich zu sein.


2

IMHO, der richtige Weg, um diesen Fehler zu beheben, ist die Konfiguration Ihrer globalen Git-Konfigurationsdatei.

Führen Sie dazu den folgenden Befehl aus: git config --global -e

Ein Editor wird angezeigt, in den Sie Ihre Standard-Git-Konfigurationen einfügen können.

Hier sind einige:

[user]
    name = your_username
    email = your_username@users.noreply.github.com 
[alias]
    # BASIC
    st = status
    ci = commit
    br = branch
    co = checkout
    df = diff

Weitere Informationen finden Sie unter Anpassen von Git - Git-Konfiguration

Wenn Sie einen Befehl wie git config...

$ git config --global core.whitespace \
    trailing-space,space-before-tab,indent-with-non-tab

... Sie können das in Ihre globale Git-Konfigurationsdatei einfügen als:

[core]
   whitespace = space-before-tab,-indent-with-non-tab,trailing-space

Für einmalige Konfigurationen können Sie so etwas wie verwenden git config --global user.name 'your_username'

Wenn Sie Ihre Git-Konfigurationen nicht global festlegen, müssen Sie dies für jedes Git-Repo tun, mit dem Sie lokal arbeiten.

Die Einstellungen user.name und user.email teilen git mit, wer Sie sind, sodass nachfolgende git commitBefehle sich nicht beschweren.*** Please tell me who you are.

Oft deuten die Befehle git darauf hin, dass Sie nicht das ausführen, was Sie ausführen sollten. Diesmal sind die vorgeschlagenen Befehle nicht schlecht:

$ git commit -m 'first commit'

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

Tipp: Bis ich mich mit git vertraut gemacht habe, habe ich mehr als ein paar Mal meinen Speck gespeichert, indem ich eine Sicherungskopie meiner Projektdatei erstellt habe - bevor ich die vorgeschlagenen git-Befehle ausgeführt und Dinge untersucht habe, von denen ich dachte, dass sie funktionieren würden.


2

Die E-Mail-Adresse kann nicht automatisch erkannt werden.

Standardmäßig wird Ihr Systembenutzername wie verwendet abc@xyz.none.

Sie müssen Ihre E-Mail-Adresse also wie folgt einstellen:

git config user.email "someone@gmail.com"

Nach dem Festlegen der E-Mail können Sie die git-Befehle ausführen und Ihre Änderungen festschreiben.

  1. git init
  2. git add *
  3. git commit -m "einige init msg"

1

Beim Versuch, einige Dateien festzuschreiben, ist diese Fehlermeldung aufgetreten.

Einfach zu laufen und git fetchdann mein Commit erneut zu versuchen, hat für mich funktioniert.


0

Um das zu beheben, benutze ich: git config --global user.email "you@example.com" und funktioniert.

user.mail keine Arbeit, müssen Sie vielleicht einen E. Tippfehler setzen?


Ich denke, das OP möchte wissen, ob dies wirklich für jedes Update notwendig ist.
tbrk

-5

Das ist ein Tippfehler. Sie haben versehentlich "user.mail" ohne " e " gesetzt. Beheben Sie das Problem, indem Sie in der globalen Konfiguration mit "Benutzer. E- Mail" festlegen

git config --global user.email "you@example.com"

Hier Lösung gefunden

https://stackoverflow.com/a/14662703


3
Wo sehen Sie "'user.mail' ohne 'e'" auf dieser Seite?
Chad Nouis
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.