Git: error "por favor dime quién eres"

227

Tengo servidores de aplicaciones que arranco juntos usando Chef + algunos scripts de bash ad-hoc. El problema es que, cuando quiero ejecutar una actualización en uno de estos servidores de aplicaciones, obtengo:

19:00:28: *** Please tell me who you are.

Run

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

¿Realmente necesito configurar esto para hacer un simple git pull origin mastercada vez que actualizo un servidor de aplicaciones? ¿Hay alguna forma de anular este comportamiento para que no se produzca un error cuando no se configuran el nombre y el correo electrónico?

randombits
fuente
3
Por lo que he encontrado, no, pero nuevamente no veo ningún problema con solo agregar su nombre y correo electrónico, incluso si son solo nombres y correos electrónicos falsos.
sean
10
Sí, debe configurarlos, si el "simple" git pullva a crear una confirmación, porque se fusionó, por ejemplo.
fork0
1
Describe el escenario de implementación unidireccional. No agregaría las credenciales para evitar cualquier confirmación automática. Sí, verá el problema con este error, pero esto significará que alguien está hurgando en la producción y cambia los archivos manualmente para activar la fusión.
Alex Skrypnyk

Respuestas:

249

Paso muchas horas cuando llamo al script php para iniciar y confirmar git. Y encontré que el flujo de trabajo debería ser:

1.git init
2.git config user.name "someone"
3.git config user.email "[email protected]"
4.git add *
5.git commit -m "some init msg"

Si intercambia [23] y 1, la configuración no funcionará en absoluto.

Desearía que esto ayude un poco.

luxuia
fuente
Esta es la práctica correcta para iniciar un repositorio git. Pero para actualizar una solución repo @gfxmonk es mejor
Davisein
¿Puedes explicar cómo funciona y por qué estaba dando error antes de hacer esto?
Chinmaya B
1
Puede agregar el --globalinterruptor a los git configcomandos y hacerlo una vez para su cuenta del sistema operativo. Después de eso, los pasos 2-3 no son necesarios.
x-yuri
50

En lugar de hacer un git pull, puedes hacer:

git fetch
git reset --hard origin/master

Ninguno de los dos requiere que configure su nombre de usuario / correo electrónico de git.

Esto destruirá los cambios / confirmaciones locales no confirmados, y dejará que su HEAD apunte a una confirmación (no una rama). Pero ninguno de los dos debería ser un problema para un servidor de aplicaciones, ya que no debería realizar cambios locales ni comprometerse con ese repositorio.

gfxmonk
fuente
El automerge de git pull es peligroso en esta situación, es mejor hacer un reset.
Davisein
¿No sería mejor usarlo git fetch && git reset --hard HEAD?
jacoor
@jacoor nope: git reset --hard HEADsimplemente descarta tus cambios no comprometidos, no cambia en qué se basa tu espacio de trabajo (ya que, por definición, ya estás en HEAD)
gfxmonk
33

Si está utilizando sourcetree: Repository -> Configuración de repositorio -> Avanzado -> desmarque la casilla "Usar configuración de usuario global"

funcionó muy bien para mí

DoronK
fuente
en mi caso tuve que volver a comprobarlo, pero de todos modos! Gracias por su ayuda
Karoly
32

funciona para mí, intente esto ... necesita configurar su terminal con acceso remoto.

     git config --global user.name "abc"
     git config --global user.email "[email protected]"
Kuldeep Singh
fuente
10

Actualice su proceso de bootstrap para crear un ${HOME}/.gitconfigcontenido adecuado o para copiar uno existente desde algún lugar.

Twalberg
fuente
9
git config user.email "insert github email here"
git config user.name "insert github real name here"

Esto funciono muy bien para mi.

MrRobot4.0
fuente
4

El mismo problema fue conmigo y lo resolvió agregando el nombre predeterminado y la configuración del repositorio de correo electrónico.

Como Doron sugirió:

Si está utilizando sourcetree: Repositorio -> Configuración del repositorio -> Avanzado -> desmarque la casilla "Usar configuración de usuario global".

Agregar nombre predeterminado y dirección de correo electrónico.

Rahul
fuente
4

En mi caso, me faltaba "e" en la palabra "correo electrónico" como dijo Chad anteriormente, pero veo que no es el caso con usted. Presiona el siguiente comando para ver si todo funciona como se esperaba.

git config -l
Mo-Gang
fuente
4

Debe escribir su correo electrónico así

 git config --global user.email "[email protected]"

Luego: escriba el nombre de usuario

 git config --global user.name "Your Name"

Después de que aparezca la ventana de Poupup

Escriba USERNAME & EMAIL para la cuenta que desea contribuir

Abu Bakr
fuente
3

Para mí, el problema era la conexión de red, una vez que me volví a conectar a mi wifi, podría obtener los detalles y confirmar sin ningún problema.

Sharukh Mastan
fuente
2

¿Realmente necesito configurar esto para hacer un maestro de origen git pull simple cada vez que actualizo un servidor de aplicaciones? ¿Hay alguna forma de anular este comportamiento para que no se produzca un error cuando no se configuran el nombre y el correo electrónico?

Solo se preguntará una vez y se asegurará de que la clave pública rsa para esta máquina se agregue a su cuenta de github a la que está intentando comprometer o pasar una solicitud de extracción.

Se puede encontrar más información sobre esto: aquí

Mansab Uppal
fuente
1
El enlace está roto
Alice Schwarze
2

Tenía esto como un mensaje de error defectuoso:
git pullfuncionó bien en la línea cmd
git pullfalló en un proceso de Perl CGI (un webhook para auto-desplegar desde github) con el error anterior.

Haciendo un git statusidentificado un archivo en conflicto. Ordenarlo solucionó el problema.

El problema volvió a ocurrir más tarde cuando cambié algunas configuraciones.

Esta vez, la configuración de $ HOME y $ USER env vars lo arregló (no están configurados por defecto en un proceso CGI)

Andrew Murphy
fuente
2

Echa un vistazo al archivo de configuración.

Repositorio> Configuración del repositorio> Editar archivo de configuración.

Verifique si la [user]sección existe. Si falta la sección de usuario, agréguela.

Ejemplo:

[user]
name = "your name"
email = "your email"
Aman Srivastava
fuente
2

uso heroku cli 1. debe usar todo el nombre de usuario y correo electrónico del usuario

$ git config --global user.email .login email.

$ git config - nombre de usuario global. nombre de heroe.

  1. git pull [url de git]
  2. git init
  3. git add *

    5 git commit -m "después de config user.name, user email"

  4. git push heroku master

linepro
fuente
2

Utilizo Jenkins y me encontré con este problema al intentar realizar una versión (que requiere un git commit). Para solucionar los problemas, necesitaba agregar un nombre de usuario personalizado / dirección de correo electrónico (ver imagen) Nombre de usuario personalizado / dirección de correo electrónicoEsto aseguró que cuando se desprotegió el código, usé el nombre / dirección de correo electrónico de mi usuario de compilación al realizar el lanzamiento. Tenga en cuenta que esta configuración está disponible en la configuración del proyecto Jenkins Multibranch Pipeline.

Craig
fuente
2

git pullNo debería requerir esto. Sin embargo, si el tirón causa un conflicto de fusión, entonces parece un desastre.

Kjeld Flarup
fuente
2

En mi humilde opinión, la forma correcta de resolver este error es configurar su archivo de configuración global de git.

Para hacerlo, ejecute el siguiente comando: git config --global -e

Aparecerá un editor donde puede insertar sus configuraciones predeterminadas de git.

Aquí hay algunos:

[user]
    name = your_username
    email = [email protected] 
[alias]
    # BASIC
    st = status
    ci = commit
    br = branch
    co = checkout
    df = diff

Para más detalles, vea Personalizar Git - Configuración de Git

Cuando veas un comando como git config...

$ git config --global core.whitespace \
    trailing-space,space-before-tab,indent-with-non-tab

... puede poner eso en su archivo de configuración global de git como:

[core]
   whitespace = space-before-tab,-indent-with-non-tab,trailing-space

Para configuraciones únicas, puede usar algo como git config --global user.name 'your_username'

Si no establece sus configuraciones de git a nivel mundial, deberá hacerlo para todos y cada uno de los repositorios de git con los que trabaje localmente.

Las configuraciones user.name y user.email le dicen a git quién eres, por lo que los git commitcomandos posteriores no se quejarán,*** Please tell me who you are.

Muchas veces, los comandos que git sugiere que ejecutes no son lo que debes ejecutar. Esta vez, los comandos sugeridos no son malos:

$ git commit -m 'first commit'

*** Please tell me who you are.

Run

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

Consejo: Hasta que me familiaricé con git, hacer una copia de seguridad de mi archivo de proyecto, antes de ejecutar los comandos sugeridos de git y explorar cosas que pensé que funcionaría, salvó mi tocino en más de unas pocas ocasiones.

l3x
fuente
2

No puede detectar automáticamente la dirección de correo electrónico.

Por defecto, toma su nombre de usuario del sistema como [email protected].

Por lo tanto, debe configurar su correo electrónico como a continuación:

git config user.email "[email protected]"

Después de configurar el correo electrónico, puede ejecutar los comandos git y confirmar sus cambios.

  1. git init
  2. git add *
  3. git commit -m "algún mensaje de inicio"
AMIT SAMOTA
fuente
1

Me encontré con este mensaje de error al intentar confirmar algunos archivos.

Simplemente ejecutar y git fetchluego intentar mi commit nuevamente funcionó para mí.

bergie3000
fuente
0

Para solucionarlo, uso: git config --global user.email "[email protected]" y funciona.

user.mail no funciona, ¿necesita poner un E. Typo quizás?

Victor Hugo Nogueira dWolf
fuente
Creo que el OP quiere saber si esto es realmente necesario para cada actualización.
tbrk
-5

Eso es un error tipográfico. Ha configurado accidentalmente "user.mail" sin " e ". Fijarlo mediante el establecimiento de "usuario. Correo electrónico" en la configuración global con

git config --global user.email "[email protected]"

Solución encontrada aquí

https://stackoverflow.com/a/14662703

Girish Joshi
fuente
3
¿Dónde ve "'user.mail' sin 'e'" en esta página?
Chad Nouis