git se compromete como usuario diferente sin correo electrónico o solo correo electrónico

Estoy tratando de realizar algunos cambios como un usuario diferente, pero no tengo una dirección de correo electrónico válida, el siguiente command no funciona para mí:

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

Tengo el mismo problema cuando bash comprometerme con solo una dirección de correo electrónico

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

En las páginas man de git para el command de confirmación, dice que puedo usar el

 standard AU Thor <author@example.com> format 

Para la opción –autor.

¿Dónde se define este formatting? ¿Qué significan A y U? ¿Cómo me comprometo con un usuario diferente con solo un nombre de usuario o solo un correo electrónico?

El formatting de autor mínimo requerido, como se insinúa en esta respuesta SO , es

 Name <email> 

En tu caso, esto significa que quieres escribir

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

Según el comentario de Willem D'Haeseleer, si no tiene una dirección de correo electrónico, puede usar <> :

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

Tal como está escrito en la página de manual de git commit que se vinculó, si proporciona algo less que eso, se usa como un token de búsqueda para search confirmaciones anteriores, buscando otras confirmaciones de ese autor.

El formatting específico es:

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

los

formatting estándar de Thor Thor <author@example.com>

Parece que se define como sigue: (por lo que sé, sin ninguna garantía)

AU Thor = nombre de usuario requerido

  • La separación de los caracteres probablemente indica que los espacios están permitidos, también podría parecerse a iniciales.
  • El nombre de usuario debe ir seguido de 1 espacio, los espacios adicionales se truncarán

<author@example.com> = dirección de correo electrónico opcional

  • Siempre debe estar entre <> signos.
  • El formatting de la dirección de correo electrónico no está validado, puedes ingresar lo que quieras
  • Opcional, puedes omitir esto explícitamente usando <>

Si no usa esta syntax exacta, git searchá entre las confirmaciones existentes y usará la primera confirmación que contenga la cadena provista.

Ejemplos:

  1. Solo nombre de usuario

    Omita la dirección de correo electrónico explícitamente:

     git commit --author="John Doe <>" -m "Impersonation is evil." 
  2. Solo correo electrónico

    Técnicamente esto no es posible. Sin embargo, puede ingresar la dirección de correo electrónico como nombre de usuario y omitir explícitamente la dirección de correo electrónico. Esto no parece ser muy útil. Creo que tendría más sentido extraer el nombre de usuario de la dirección de correo electrónico y luego usarlo como nombre de usuario. Pero si tienes que:

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

Me encontré con esto cuando trato de convertir un repository de mercurial a git. Probé los commands en msysgit 1.7.10.

Formato

 AU Thor <author@example.com> 

simplemente significa que debe especificar

 FirstName MiddleName LastName <email@example.com> 

Parece que los apellidos intermedios y los apellidos son opcionales (tal vez la parte anterior al correo electrónico no tiene un formatting estricto). Intenta, por ejemplo, esto:

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

Como dicen los doctores:

  --author=<author> Override the commit author. Specify an explicit author using the standard AU 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 (ie rev-list --all -i --author=<author>); the commit author is then copied from the first such commit found. 

si no utiliza este formatting, git trata la cadena proporcionada como un patrón e intenta encontrar el nombre coincidente entre los autores de otras confirmaciones.

Solo complemento:

git commit –author = "john@doe.com" -m "La personificación es malvada".

En algunos casos, la confirmación aún falla y muestra el siguiente post:

*** Por favor, dime quién eres.

correr

git config –global usuario.email "you@example.com" git config –global usuario.nombre "Su nombre"

para establecer la identidad pnetworkingeterminada de su count. Omitir –global para establecer la identidad solo en este repository.

fatal: no se puede detectar automáticamente la dirección de correo electrónico (obtuvo xxxx)

Así que solo ejecuta "git config", luego "git commit"

Si te estás comprometiendo con Github no necesitas un correo electrónico real, puedes usar <username>@users.noreply.github.com

Independientemente de usar Github o no, es probable que primero desee cambiar los detalles de su committer (en Windows use SET GIT_... )

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

Luego configura el autor

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

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