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 "[email protected]"
  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?

Randombits
quelle
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 "[email protected]"
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.

Luxuia
quelle
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.

gfxmonk
quelle
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.

DoronK
quelle
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 "[email protected]"
Kuldeep Singh
quelle
10

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

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

Das hat bei mir super funktioniert.

MrRobot4.0
quelle
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.

Rahul
quelle
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
Mo-Gang
quelle
4

Sie müssen Ihre E-Mail so schreiben

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

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

Abu Bakr
quelle
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.

Sharukh Mastan
quelle
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

Mansab Uppal
quelle
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).

Andrew Murphy
quelle
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"
Aman Srivastava
quelle
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

linepro
quelle
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.

Craig
quelle
2

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

Kjeld Flarup
quelle
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 = [email protected] 
[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 "[email protected]"
  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.

l3x
quelle
2

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

Standardmäßig wird Ihr Systembenutzername wie verwendet [email protected].

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

git config user.email "[email protected]"

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"
AMIT SAMOTA
quelle
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.

bergie3000
quelle
0

Um das zu beheben, benutze ich: git config --global user.email "[email protected]" und funktioniert.

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

Victor Hugo Nogueira dWolf
quelle
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 "[email protected]"

Hier Lösung gefunden

https://stackoverflow.com/a/14662703

Girish Joshi
quelle
3
Wo sehen Sie "'user.mail' ohne 'e'" auf dieser Seite?
Chad Nouis