GIT Commit als anderer Benutzer ohne E-Mail / oder nur E-Mail

127

Ich versuche, einige Änderungen als anderer Benutzer festzuschreiben, habe jedoch keine gültige E-Mail-Adresse. Der folgende Befehl funktioniert bei mir nicht:

git commit --author="john doe" -m "some fix"
fatal: No existing author found with 'john doe'

Ich habe das gleiche Problem, wenn ich versuche, nur eine E-Mail-Adresse festzulegen

git commit --author="[email protected]" -m "some fix"
fatal: No existing author found with '[email protected]'

Auf den GIT-Manpages für den Commit-Befehl steht, dass ich den verwenden kann

standard A U Thor <[email protected]> format

Für die Option --author.

Wo ist dieses Format definiert? Wofür stehen A und U? Wie kann ich mich für einen anderen Benutzer mit nur einem Benutzernamen oder nur einer E-Mail festlegen?

Willem D'Haeseleer
quelle
3
AU steht für nichts, es ist nur ein Beispiel: AU Thor => AUThor => Autor . Sie können alles, was Sie wollen, als Namen angeben.
Samy Dindane
1
Ich weiß, dass AU Thor den Autor bildet. Ich habe mich gefragt, ob die Trennung eine Bedeutung hat.
Willem D'Haeseleer

Antworten:

142

Das minimal erforderliche Autorenformat, wie in dieser SO-Antwort angedeutet , ist

Name <email>

In Ihrem Fall bedeutet dies, dass Sie schreiben möchten

git commit --author="Name <email>" -m "whatever"

Laut Willem D'Haeseleers Kommentar können Sie Folgendes verwenden, wenn Sie keine E-Mail-Adresse haben <>:

git commit --author="Name <>" -m "whatever"

Wie auf der git commitManpage beschrieben , auf die Sie verlinkt haben, wird es, wenn Sie weniger als das angeben, als Such-Token verwendet, um frühere Commits zu durchsuchen und nach anderen Commits dieses Autors zu suchen.

Eykanal
quelle
28
Ich habe gerade herausgefunden, dass Sie, wenn Sie keine E-Mail-Adresse haben, auch einfach "name <>" eingeben können, um diese explizit leer zu lassen, anstatt sie falsch einzugeben.
Willem D'Haeseleer
2
Wenn Sie "name <>"und git commit --amenddanach verwenden, schlägt dies mit einem invalid identFehler fehl .
Also
7
Selbst wenn Sie diese Option verwenden, müssen Sie anscheinend immer noch user.email und user.name in Ihrer Git-Konfiguration festgelegt haben, andernfalls beschwert sich Git.
qwertzguy
51

Das spezifische Format ist:

git commit --author="John Doe <[email protected]>" -m "Impersonation is evil." 
pmr
quelle
1
Warum ist kein Passwort von John Doe erforderlich, wenn Sie sich für seinen Namen festlegen?
Narek
3
@ Narek Was wäre das in diesem Zusammenhang?
PMR
37

Das

Standardformat von AU Thor <[email protected]>

Scheint wie folgt definiert zu sein: (soweit ich weiß, ohne jegliche Garantie)

AU Thor = erforderlicher Benutzername

  • Die Trennung der Zeichen weist wahrscheinlich darauf hin, dass Leerzeichen zulässig sind, es könnte auch Initialen ähneln.
  • Dem Benutzernamen muss 1 Leerzeichen folgen, zusätzliche Leerzeichen werden abgeschnitten

<[email protected]> = optionale E-Mail-Adresse

  • Muss immer zwischen <> Zeichen liegen.
  • Das E-Mail-Adressformat ist nicht validiert. Sie können so ziemlich alles eingeben, was Sie möchten
  • Optional können Sie dies explizit weglassen, indem Sie <> verwenden

Wenn Sie diese exakte Syntax nicht verwenden, durchsucht git die vorhandenen Commits und verwendet das erste Commit, das Ihre angegebene Zeichenfolge enthält.

Beispiele:

  1. Nur Benutzername

    Lassen Sie die E-Mail-Adresse explizit weg:

    git commit --author="John Doe <>" -m "Impersonation is evil."
    
  2. Nur E-Mail

    Technisch ist das nicht möglich. Sie können jedoch die E-Mail-Adresse als Benutzernamen eingeben und die E-Mail-Adresse explizit weglassen. Dies scheint nicht sehr nützlich zu sein. Ich denke, es wäre noch sinnvoller, den Benutzernamen aus der E-Mail-Adresse zu extrahieren und diesen dann als Benutzernamen zu verwenden. Aber wenn Sie müssen:

    git commit --author="[email protected] <>" -m "Impersonation is evil." 
    

Ich bin darauf gestoßen, als ich versucht habe, ein Repository von mercurial in git zu konvertieren. Ich habe die Befehle auf msysgit 1.7.10 getestet.

Willem D'Haeseleer
quelle
13

Einfach ergänzen:

git commit --author = "[email protected]" -m "Identitätswechsel ist böse."

In einigen Fällen schlägt das Festschreiben immer noch fehl und zeigt die folgende Meldung an:

*** Bitte sag mir wer du bist.

Lauf

git config --global user.email "[email protected]" git config --global user.name "Your Name"

um die Standardidentität Ihres Kontos festzulegen. Lassen Sie --global weg, um die Identität nur in diesem Repository festzulegen.

fatal: E-Mail-Adresse kann nicht automatisch erkannt werden (xxxx erhalten)

Führen Sie einfach "git config" und dann "git commit" aus.

Qinxian
quelle
Das brauchte ich. Ich habe einen separaten Benutzernamen und eine separate E-Mail-Adresse für einen Unternehmens-GitHub und den öffentlichen GitHub. Ich musste mein aktuelles Repo so einstellen, dass mein öffentlicher GitHub-Benutzername und meine E-Mail-Adresse verwendet wurden, damit ich meine Änderungen übertragen konnte, ohne eine private E-Mail preiszugeben.
TBirkulosis
8

Format

A U Thor <[email protected]>

bedeuten einfach, dass Sie angeben sollten

FirstName MiddleName LastName <[email protected]>

Es sieht so aus, als wären Vor- und Nachnamen optional (möglicherweise hat der Teil vor der E-Mail überhaupt kein striktes Format). Versuchen Sie zum Beispiel Folgendes:

git commit --author="John <[email protected]>" -m "some fix"

Wie die Dokumente sagen:

  --author=<author>
       Override the commit author. Specify an explicit author using the standard 
       A U Thor <[email protected]> format. Otherwise <author> is assumed to 
       be a pattern and is used to search for an existing commit by that author 
       (i.e. rev-list --all -i --author=<author>); the commit author is then copied 
       from the first such commit found.

Wenn Sie dieses Format nicht verwenden, behandelt git die angegebene Zeichenfolge als Muster und versucht, einen passenden Namen unter den Autoren anderer Commits zu finden.

KL-7
quelle
Es gibt keinen Vornamen, Vornamen, Nachnamen . Sehen Sie das .
Samy Dindane
3

Die --authorOption funktioniert nicht:

*** Please tell me who you are.

Run

  git config --global user.email "[email protected]"
  git config --global user.name "Your Name"

Das macht:

git -c user.name='A U Thor' -c [email protected] commit
user2394284
quelle
Dies ist der einzige, der für mich gearbeitet hat. Beachten Sie, dass die Reihenfolge wichtig ist. git commit -c user.name="j bloggs" -am "message"gibt einen Fehlerfatal: Option -m cannot be combined with -c/-C/-F
Martin
2

Öffnen Sie Git Bash.

Legen Sie einen Git-Benutzernamen fest:

$ git config --global user.name "name family" Bestätigen Sie, dass Sie den Git-Benutzernamen richtig eingestellt haben:

$ git config --globaler Benutzername

Name Familie

Stellen Sie eine Git-E-Mail ein:

$ git config --global user.email [email protected] Bestätigen Sie, dass Sie die Git-E-Mail richtig eingestellt haben:

$ git config --global user.email

[email protected]

Ein Mo.
quelle
0

Es hängt alles davon ab, wie Sie sich verpflichten.

Beispielsweise:

git commit -am "Some message"

wird Ihren ~\.gitconfigBenutzernamen verwenden. Mit anderen Worten, wenn Sie diese Datei öffnen, sollte eine Zeile angezeigt werden, die folgendermaßen aussieht:

[user]
    email = [email protected]

Das wäre die E-Mail, die Sie ändern möchten. Wenn Sie eine Pull-Anfrage über Bitbucket oder Github usw. ausführen, sind Sie derjenige, als den Sie angemeldet sind.

Kolob Canyon
quelle
0

Eine Alternative, wenn es darum geht, die echte E-Mail-Adresse zu verbergen ... Wenn Sie sich zu Github verpflichten, benötigen Sie keine echte E-Mail, die Sie verwenden können<username>@users.noreply.github.com

Unabhängig davon, ob Sie Github verwenden oder nicht, möchten Sie wahrscheinlich zuerst Ihre Committer- Details ändern (unter Windows SET GIT_...).

GIT_COMMITTER_NAME='username' 
GIT_COMMITTER_EMAIL='[email protected]'

Stellen Sie dann den Autor ein

git commit --author="username <[email protected]>"

https://help.github.com/articles/keeping-your-email-address-private

KCD
quelle
Im Gegensatz zu allen anderen Lösungen funktioniert dies, wenn Sie user.email/user.name zunächst nicht initialisiert haben.
Andy
-2

Führen Sie diese beiden Befehle vom Terminal aus, um die E-Mail-Adresse und den Namen des Benutzers festzulegen

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

 git config --global user.name "your name" 
Diptendu Das
quelle