GIT si impegna come utente diverso senza e-mail / o solo e-mail


127

Sto cercando di eseguire alcune modifiche come utente diverso, ma non ho un indirizzo e-mail valido, il seguente comando non funziona per me:

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

Ho lo stesso problema quando provo a impegnarmi solo con un indirizzo email

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

Sulle pagine man di GIT per il comando commit dice che posso usare il

standard A U Thor <author@example.com> format

Per l'opzione --author.

Dove viene definito questo formato? cosa significano A e U? come mi impegno per un altro utente con solo un nome utente o solo un'e-mail?


3
AU non sta per niente, è solo un esempio: AU Thor => AUThor => Autore . Puoi specificare tutto ciò che desideri come nome.
Samy Dindane

1
So che AU Thor forma l'autore, mi chiedevo se ci fosse un significato nella separazione.
Willem D'Haeseleer

Risposte:


142

Il formato minimo richiesto per l'autore, come suggerito in questa risposta SO , è

Name <email>

Nel tuo caso, questo significa che vuoi scrivere

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

Secondo il commento di Willem D'Haeseleer, se non hai un indirizzo email, puoi usare <>:

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

Come scritto nella git commitpagina man a cui ti sei collegato, se fornisci qualcosa di meno, viene usato come token di ricerca per cercare tra i commit precedenti, cercando altri commit di quell'autore.


28
Ho appena scoperto che se non hai un indirizzo email puoi anche digitare "nome <>", per lasciarlo esplicitamente vuoto invece di inserire fasullo.
Willem D'Haeseleer

2
Se usi "name <>", e git commit --amenddopo, fallirà con invalid identerrore; quindi non farlo
sanmai

7
Apparentemente anche quando si utilizza questa opzione, è comunque necessario impostare user.email e user.name nella propria configurazione git, altrimenti git si lamenta.
qwertzguy

Come aggiungo un file come utente diverso per il mio primo commit? Successivamente userò il comando commit.
MasterJoe

51

Il formato specifico è:

git commit --author="John Doe <john@doe.com>" -m "Impersonation is evil." 

1
Perché non richiede la password di John Doe se ti impegni per il suo nome?
Narek

3
@ Narek Cosa sarebbe in questo contesto?
pmr

37

Il

formato standard AU Thor <autore@esempio.com>

Sembra essere definito come segue: (per quanto ne so, senza alcuna garanzia)

AU Thor = nome utente richiesto

  • La separazione dei caratteri indica probabilmente che gli spazi sono consentiti, potrebbe anche essere simile alle iniziali.
  • Il nome utente deve essere seguito da 1 spazio, gli spazi aggiuntivi verranno troncati

<autore@esempio.com> = indirizzo email opzionale

  • Deve sempre essere compreso tra i segni <>.
  • Il formato dell'indirizzo e-mail non è convalidato, puoi praticamente inserire quello che vuoi
  • Facoltativo, puoi ometterlo esplicitamente utilizzando <>

Se non usi questa sintassi esatta, git cercherà tra i commit esistenti e utilizzerà il primo commit che contiene la stringa fornita.

Esempi:

  1. Solo nome utente

    Ometti esplicitamente l'indirizzo email:

    git commit --author="John Doe <>" -m "Impersonation is evil."
    
  2. Solo email

    Tecnicamente questo non è possibile. È comunque possibile inserire l'indirizzo e-mail come nome utente e omettere esplicitamente l'indirizzo e-mail. Non sembra molto utile. Penso che avrebbe ancora più senso estrarre il nome utente dall'indirizzo e-mail e quindi utilizzarlo come nome utente. Ma se devi:

    git commit --author="john@doe.com <>" -m "Impersonation is evil." 
    

Mi sono imbattuto in questo quando ho provato a convertire un repository da mercurial a git. Ho testato i comandi su msysgit 1.7.10.


13

Basta integrare :

git commit --author = "john@doe.com" -m "La rappresentazione è malvagia."

In alcuni casi il commit non riesce ancora e ti mostra il seguente messaggio:

*** Per favore dimmi chi sei.

Correre

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

per impostare l'identità predefinita del tuo account. Omit --global per impostare l'identità solo in questo repository.

irreversibile: impossibile rilevare automaticamente l'indirizzo e-mail (ottenuto xxxx)

Quindi esegui "git config", quindi "git commit"


Questo è ciò di cui avevo bisogno. Ho un nome utente e un indirizzo email separati per un GitHub aziendale e un GitHub pubblico. Avevo bisogno di impostare il mio repository corrente per utilizzare il mio nome utente e e-mail GitHub pubblici in modo da poter inviare le mie modifiche senza esporre un'e-mail privata.
TBirkulosis

8

Formato

A U Thor <author@example.com>

significa semplicemente che dovresti specificare

FirstName MiddleName LastName <email@example.com>

Sembra che il secondo e il cognome siano opzionali (forse la parte prima dell'email non ha affatto un formato rigoroso). Prova, ad esempio, questo:

git commit --author="John <john@doe.com>" -m "some fix"

Come dicono i documenti:

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

se non usi questo formato, git tratta la stringa fornita come un modello e prova a trovare il nome corrispondente tra gli autori di altri commit.


Non esiste una cosa come FirstName MiddleName LastName . Vedi questo .
Samy Dindane

3

L' --authoropzione non funziona:

*** Please tell me who you are.

Run

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

Questo fa:

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

Questo è l'unico che ha funzionato per me. Nota che l'ordine è importante. git commit -c user.name="j bloggs" -am "message"dà un errorefatal: Option -m cannot be combined with -c/-C/-F
Martin

2

Apri Git Bash.

Imposta un nome utente Git:

$ git config --global user.name "nome famiglia" Conferma di aver impostato correttamente il nome utente Git:

$ git config - nome.utente globale

nome della famiglia

Imposta un'e-mail Git:

$ git config --global user.email email@foo.com Conferma di aver impostato correttamente l'email Git:

$ git config --utente globale.email

email@foo.com


0

Dipende tutto da come ti impegni.

Per esempio:

git commit -am "Some message"

utilizzerà il tuo ~\.gitconfignome utente. In altre parole, se apri quel file dovresti vedere una riga simile a questa:

[user]
    email = someemail@gmail.com

Questa sarebbe l'email che desideri modificare. Se stai eseguendo una richiesta pull tramite Bitbucket o Github ecc., Saresti chiunque tu abbia effettuato l'accesso.


0

Un'alternativa , se la preoccupazione è per nascondere il vero indirizzo email ... Se si sta commettendo a Github non è necessario un vero e proprio e-mail è possibile utilizzare<username>@users.noreply.github.com

Indipendentemente dall'uso o meno di Github, probabilmente prima vuoi modificare i dettagli del tuo committer (su Windows SET GIT_...)

GIT_COMMITTER_NAME='username' 
GIT_COMMITTER_EMAIL='username@users.noreply.github.com'

Quindi imposta l'autore

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

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


A differenza di tutte le altre soluzioni, funziona quando inizialmente non hai inizializzato user.email/user.name.
Andy,

-2

Esegui questi due comandi dal terminale per impostare Email utente e Nome

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

 git config --global user.name "your name" 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.