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.