2012-07-20 5 views
84

sto cercando di commettere alcuni cambiamenti come un utente diverso, ma non ho un indirizzo email valido, seguente comando non funziona per me:git commit come altro utente senza email/o e-mail solo

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

ho lo stesso problema quando si cerca di commettere solo con un indirizzo email

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

Sulle pagine git man per il comando commit si dice che posso utilizzare il

standard A U Thor <[email protected]> format 

Per l'opzione --author.

Dove è definito questo formato? cosa significano A e U? come faccio a impegnarmi per un utente diverso con solo un nome utente o solo un'email?

+1

* AU * non significa nulla, è solo un esempio: * AU Thor * => * Autore * => * Autore * . Puoi specificare tutto ciò che vuoi come nome. –

+1

So che A U Thor forma l'autore, mi chiedevo se c'era qualche significato nella separazione. –

+0

No, ce n'è. –

risposta

22

Il

norma A U Thor < autore @ esempio.com > formato

sembra essere definite come segue: (per quanto ne so, senza alcuna garanzia)

AU Thor = nome utente

  • necessaria La separazione del caratteri probabilmente indica che gli spazi sono consentiti, potrebbe anche essere simile alle iniziali.
  • Il nome utente deve essere seguita da 1 posto, gli spazi aggiuntivi saranno troncati

<[email protected]> = indirizzo e-mail opzionale

  • deve essere sempre tra < > segni .
  • Il formato indirizzo e-mail non viene convalidato, si può tranquillamente entrare quello che vuoi
  • opzionale, è possibile omettere questo modo esplicito utilizzando <>

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

Esempi:

  1. unico nome utente

    Omettere l'indirizzo e-mail in modo esplicito:

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

    Tecnicamente questo non è possibile. Puoi comunque inserire l'indirizzo email come nome utente ed omettere esplicitamente l'indirizzo email. Questo non sembra molto utile. Penso che avrebbe ancora più senso estrarre il nome utente dall'indirizzo e-mail e usarlo come nome utente. Ma se si deve:

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

mi corse per questo quando si cerca di convertire un repository da Mercurial a git. Ho testato i comandi su msysgit 1.7.10.

32

Il formato specifico è:

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

Perché non richiede la password di John Doe se si commette per il suo nome? – Narek

+2

@Narek Cosa sarebbe in questo contesto? – pmr

5

Formato

A U Thor <[email protected]> 

semplicemente significa che si dovrebbe specificare

FirstName MiddleName LastName <[email protected]> 

Sembra centrale e il cognome sono opzionali (forse la parte prima l'e-mail non ha un formato rigoroso affatto). Provate, ad esempio, questo:

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

Come i documenti dicono:

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

se non si utilizza questo formato, git tratta forniti stringa come un modello e cerca di trovare corrispondenza nome tra la autori di altri commit.

+0

Non esistono cose come * FirstName MiddleName LastName *. Vedi [this] (http://stackoverflow.com/questions/11579311/git-commit-as-different-user-without-email-or-only-email#comment15320898_11579311). –

98

Il minimo formato Autore richiesto, come accennato al this SO answer, è

Name <email> 

Nel vostro caso, questo significa che si vuole scrivere

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

Per Willem D'della Haeseleer, se si non hanno un indirizzo e-mail, è possibile utilizzare <>:

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

A s scritto sullo git commit man page a cui ti sei collegato, se fornisci qualcosa di meno, viene usato come un token di ricerca per cercare tra i commit precedenti, cercando altri commit da quell'autore.

+21

Appena scoperto che se non si dispone di un indirizzo di posta elettronica è possibile anche solo digitare "nome <>", per lasciare esplicitamente vuoto invece di entrare falso. –

+0

Se si usa '" nome <> "', e 'git commit --amend' dopo, fallirà con errore' ident ident'; quindi non farlo – sanmai

+1

Apparentemente, anche usando questa opzione, hai ancora bisogno di impostare user.email e user.name nella tua git config, altrimenti si lamenta git. – qwertzguy

2

Proprio supplemento:

git commit --author = "[email protected]" -m "la rappresentazione è male".

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

*** La prego di dirmi chi sei.

Run

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

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

fatale: in grado di indirizzo e-mail rilevamento automatico (ottenuto xxxx)

Quindi, basta eseguire "git config", poi "git commit"

-4

Se si sta commettendo a Github non lo fai bisogno di un vero e proprio e-mail è possibile utilizzare <username>@users.noreply.github.com

Indipendentemente da utilizzare Github o no, probabilmente si vuole prima modificare la committer dettagli (su Windows utilizzano SET GIT_...)

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

quindi impostare l'autore

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

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