2012-07-20 27 views
84

Estoy tratando de cometer algunos cambios como un usuario diferente, pero no tener una dirección válida de correo electrónico, comando siguiente no funciona para mí:git commit como otro usuario sin correo/o correo electrónico sólo

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

que tienen el mismo problema cuando se trata de comprometerse sólo con una dirección de correo electrónico

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

en las páginas del manual para el GIT comandos de la confirmación que dice que puedo utilizar el

standard A U Thor <[email protected]> format 

Para la opción --author.

¿Dónde se define este formato? ¿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?

+1

* AU * no representa nada, es sólo un ejemplo: * AU Thor * => * Autor * => * Autor * . Puede especificar cualquier cosa que desee como nombre. –

+1

Sé que A U Thor forma Autor, me preguntaba si había algún significado en la separación. –

+0

No, hay alguno. –

Respuesta

22

El

estándar A U Thor < autor @ ejemplo.com > formato

parece definirse como sigue: (por lo que sé, con absolutamente ninguna garantía)

AU Thor = nombre de usuario requerido

  • La separación de la caracteres probablemente indica que los espacios están permitidos, también podría parecerse a iniciales.
  • El nombre de usuario que se ha seguido de 1 plaza, espacios adicionales serán truncada

<[email protected]> = dirección de correo electrónico opcional

  • siempre debe estar entre < > signos .
  • El formato de dirección de correo electrónico no se valida, se puede casi Introduzca lo que quiere
  • opcional, se puede omitir esta manera explícita mediante el uso de <>

Si no se utiliza esta sintaxis exacta, git buscará a través de las confirmaciones existentes y usará la primera confirmación que contenga la cadena provista.

Ejemplos:

  1. único nombre de usuario

    Omitir dirección de correo electrónico de forma explícita:

    git commit --author="John Doe <>" -m "Impersonation is evil." 
    
  2. Sólo 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 usted tiene que:

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

me encontré a este al intentar convertir un repositorio de Mercurial Git. Probé los comandos en msysgit 1.7.10.

32

El formato específico es:

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

¿Por qué no requiere la contraseña de John Doe si compromete su nombre? – Narek

+2

@Narek ¿Qué sería eso en este contexto? – pmr

5

Formato

A U Thor <[email protected]> 

simplemente significa que usted debe especificar

FirstName MiddleName LastName <[email protected]> 

Parece media y apellidos son opcionales (tal vez la parte antes el correo electrónico no tiene un formato estricto). Pruebe, por ejemplo, esto:

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

Como los documentos dicen:

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

si no se usa este formato, golosinas git proporcionado cadena como un patrón y trata de encontrar los correspondientes nombre entre los autores de otros commits.

+0

No existe el nombre * Nombre Apellido Nombre Apellido *. Ver [esto] (http://stackoverflow.com/questions/11579311/git-commit-as-different-user-without-email-or-only-email#comment15320898_11579311). –

98

El formato del autor requerida mínima, como dio a entender en el this SO answer, es

Name <email> 

En su caso, esto significa que desea escribir

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

por Willem D'Haeseleer, si no tienen una dirección de correo electrónico, puede utilizar <>:

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

un s escrito en el git commit man page al que se ha vinculado, si proporciona algo menos que eso, se usa como un token de búsqueda para buscar confirmaciones anteriores, buscando otras confirmaciones de ese autor.

+21

Acabo de enterarme de que, si no tiene una dirección de correo electrónico, también puede escribir "nombre <>", para dejarla en blanco explícitamente en lugar de ingresar como falsa. –

+0

Si usa '' name <> "' y 'git commit --amend' después, se producirá un error' invalid ident'; así que no lo hagas – sanmai

+1

Aparentemente incluso cuando usas esa opción, aún necesitas haber configurado user.email y user.name en tu configuración de git, de lo contrario, git se queja. – qwertzguy

2

Sólo suplemento:

git commit --author = "[email protected]" -m "La suplantación es malo."

En algunos casos la confirmación tiene todavía falla y muestra el siguiente mensaje:

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

Run

git config --global user.email "[email protected]" git config user.name --global "Su nombre"

para establecer la identidad predeterminada de su cuenta. Omitir --global para establecer la identidad solo en este repositorio.

fatal: no se puede dirección de correo electrónico de detección automática (tiene xxxx)

Así que sólo ejecute "git config", luego "git commit"

-4

Si se está comprometiendo a Github no lo hace necesitará un correo electrónico real que puede utilizar <username>@users.noreply.github.com

Independientemente de la utilización de Github o no, es probable que primero quiere cambiar su committer detalles (en las ventanas utilizan SET GIT_...)

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

asentando después el autor

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

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

Cuestiones relacionadas