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="john@doe.com" -m "some fix"
fatal: No existing author found with 'john@doe.com'

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

standard A U Thor <author@example.com> 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?


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.


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 <john@doe.com>" -m "Impersonation is evil." 

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 <author@example.com>

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

<author@example.com> = 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="john@doe.com <>" -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.


13

Einfach ergänzen:

git commit --author = "john@doe.com" -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 "you@example.com" 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.


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 <author@example.com>

bedeuten einfach, dass Sie angeben sollten

FirstName MiddleName LastName <email@example.com>

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 <john@doe.com>" -m "some fix"

Wie die Dokumente sagen:

  --author=<author>
       Override the commit author. Specify an explicit author using the standard 
       A U Thor <author@example.com> 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.


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 "you@example.com"
  git config --global user.name "Your Name"

Das macht:

git -c user.name='A U Thor' -c user.email=author@example.com commit

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@foo.com Bestätigen Sie, dass Sie die Git-E-Mail richtig eingestellt haben:

$ git config --global user.email

email@foo.com


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 = someemail@gmail.com

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.


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='username@users.noreply.github.com'

Stellen Sie dann den Autor ein

git commit --author="username <username@users.noreply.github.com>"

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


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 "you@example.com" 

 git config --global user.name "your name" 
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.