git empuja con el usuario incorrecto desde la terminal

112

Tengo un problema con git y mi terminal.

Aquí hay una galería para mostrarle mi problema: http://imgur.com/a/6RrEY

Cuando presiono las confirmaciones desde mi terminal, git dice que las presiono con otro nombre de usuario, es un usuario de mi organización (mi empresa) sin ningún compromiso y parece que no pertenece a nadie: (ver la primera foto de la galería)

Pero esto no sucede cuando uso Github para mac, en el feed veo las confirmaciones empujadas por mí mismo.

El problema también afecta a mis repositorios personales, mi terminal dice que no tengo el permiso para enviar confirmaciones en esos repositorios (lo cual es obviamente incorrecto) ya que intenta enviarlo con este usuario: (ver la segunda foto de la galería)

Adivina qué ? Esto tampoco sucede con Github para mac.

Cambié mi computadora a una nueva hace unos días, así que restablecí toda mi clave ssh de github y dejé solo una nueva generada por Github para Mac, así que no creo que haya algún usuario fantasma / clave ssh oculta en algún lugar, este disco duro es nuevo: (ver la tercera foto de la galería)

Mi archivo .gitconfig está todo claro, solo están mis credenciales: (ver la cuarta imagen de la galería)

Realmente no lo entiendo, ayuda, StackOverflow, eres mi única esperanza.

(Mis disculpas por mis pobres habilidades con Gimp y la referencia de Star Wars)

EDITAR: ssh-add -l solo muestra la buena clave ssh creada por github para mac y solo tengo una cuenta de github

EDIT2: ssh -T [email protected] reconoceme como el buen usuario.

EDIT3: Después de algunas pruebas, parece que mi terminal hace los commits con mi nombre de usuario, pero los empuja con el otro, Github para mac confirma y empuja con el buen nombre de usuario. Esta situación sucede con cada repositorio que tengo / hago (incluso nuevo unos).

EDIT4: En un repositorio personal git log --pretty="%h %an %ae"muestra mi buen nombre de usuario

EDIT5: No hay señales de variables de entorno que anulen mis credenciales en my env. Incluso si trato de establecer esas variables con buenas credenciales, el problema persiste.

EDIT6: Las cosas funcionan normalmente si fuerzo al usuario en la ruta /.git/configde un repositorio, pero no creo que esa sea la buena opción:http://[email protected]/USER/REPO.git

EDIT7: Eliminamos el usuario de git que me envió las confirmaciones y esto trae otro error:remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/USER/REPO.git/'

EDICIÓN FINAL: instalé git con homebrew, escribí git config --global push.default simple y ahora toma mis credenciales incluso sin forzar al usuario. Eso es extraño. Gracias a todos por su ayuda, ¡son buenos chicos!

Yinfei
fuente
2
comprobar ~/.gitconfigy $project_root/.git/configarchivos. Uno de esos dos seguramente está mal configurado para el nombre de usuario.
mu 無
1
Gracias por tu respuesta ansh0l. ~/.gitconfiges claro y también lo es $project_root/.git/config. De hecho, tengo este problema con cada proyecto personal, los proyectos de trabajo se pueden impulsar ya que este otro usuario pertenece a mi organización que posee esos repositorios.
Yinfei
¿Tienes varias cuentas de github entonces? ¿Uno para la empresa, el otro para uso personal?
mu 無
No, solo uno para todo.
Yinfei
1
Una solución molesta sería simplemente regenerar otra clave SSH. Si está utilizando su clave SSH actual con otro servicio, no tendría sentido.
Eduardo Bautista

Respuestas:

167

Acabo de tener este problema en el trabajo. El git incorporado que se envía con mac o viene cuando instalas xcode almacena en caché las credenciales de git en el llavero. La solución para mí fue:

iniciar el acceso al llavero (iniciar el foco mediante cmd + espacio, escribir llavero, presionar enter)

Debajo de los llaveros en la parte superior izquierda, seleccione "iniciar sesión". En la categoría de la izquierda, seleccione "contraseñas"

busque el nombre "github" y elimínelo.

usuario542833
fuente
2
Asegúrese de eliminar todas las entradas de github aquí y establecer la configuración de inicio de sesión * git config --global user.name <name> * git config --global user.email <email>
Shank_Transformer
En mi caso, SourceTree estaba experimentando este problema. ¡Eliminar el elemento en el llavero lo solucionó!
Shoerob
1
@Shank_Transformer, ¡tu solución funcionó para mí! ¡Gracias!
Nazariy
Puede que tenga que buscar (o iniciar directamente) seahorseen Ubuntu.
caw
3
Estoy en deuda con usted señor
Baconbeastnz
46

github te identifica por la clave ssh que ve, no por ninguna configuración de git.

Por lo tanto, debe asegurarse de que la clave ssh de su cuenta de trabajo no esté en su llavero cuando intente presionar desde su cuenta personal y viceversa.

Úselo ssh-add -lpara determinar qué claves están en su llavero y ssh-add -d <keyfile>para quitar una clave de su llavero, si no funciona, quite la clave ssh 'no deseada' de ~/.ssh/config.

fuente

NB: Github seguirá identificando su confirmación basándose únicamente en el correo electrónico.

Nithin
fuente
5
Esta es la única respuesta que explica por qué estaba usando persistentemente la cuenta de github incorrecta a pesar de que user.emailestaba configurada correctamente. Ojalá pudiera votar a favor cinco veces.
Chris
1
en mi caso, la eliminación de la clave ssh funcionó como un encantossh-add -D
rPawel
Esta fue la única respuesta que funcionó para mí. ¡¡Gracias!!
Edward Hartnett
La única opción que funcionó. No tiene sentido que git no elija la clave correcta. Dado que estamos mencionando el archivo ssh, debe usarse en config.
Revanth Kumar
Cuando lo hago ssh-add -l, obtengo una respuesta que no ayuda. Escribe 4096 SHA256:lotsOfGibberish,about40chars (RSA)No sé cómo enviarnos esta información.
MiguelMunoz
20

A pesar de todas las excelentes opciones ofrecidas por otros usuarios, la única forma de solucionar esto era reinstalar git por completo y escribir git config --global push.default simplepara reescribir buenas credenciales.

Yinfei
fuente
@VonC, a pesar de que su respuesta fue excelente, no funcionó en absoluto. Esta es la única solución que funcionó para mí. Me pregunto si es un problema de git o OSX ...
swilgosz
40
git config --system --unset credential.helperfuncionó para mí, ahora me piden mis credenciales de GitHub en push nuevamente y puedo proporcionar el ID de usuario y la contraseña correctos.
CodeManX
@CoDEmanX tu fue la única respuesta que funcionó para mí. Para cualquier otra persona que se encuentre con esto, fue porque usamos 2FA en el trabajo con github y primero necesitaba generar un token desde la interfaz gráfica de usuario de github y usarlo como mi contraseña desde la línea de comando después de haber restablecido mis credenciales locales. consulte https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/ para obtener más detalles
vancouverwill
Es solo el archivo .gitconfig. Quite eso o reinícielo ... Enfrenté este problema cuando envié un proyecto de prueba para una entrevista. Maldita sea, aunque duele. Está con el archivo de configuración
Girish
git config --system --unset credential.helperno funciona en Windows 10 git bash:error: could not lock config file C:/Program Files/Git/mingw64/etc/gitconfig: Permission denied
alex
17

Estoy usando Windows 10 y hoy me enfrenté al mismo problema. En mi caso, el administrador de credenciales de Windows guardó mis credenciales para diferentes usuarios. Por lo tanto, eliminando / desarmando las credenciales de git con el siguiente comando, git config --global --unset credential.helper

no ayudó. Tuve que eliminar manualmente la entrada en Windows siguiendo la siguiente manera,

Inicio -> Panel de control ---> Cuentas de usuario ---> Administre sus credenciales ---> Credenciales de Windows

Luego busque una entrada como, git: https://github.com y elimínela. Funciona bien después de eso.

Gowtham
fuente
Gracias Gowtham
Balint
Gracias, nunca tuve este problema antes en Windows, pero hoy tuve este problema y estoy feliz de ver su comentario aquí.
RaKoDev
Dice que "no ayudó", pero si le dio el mensaje de que no podía bloquear el archivo de configuración, entonces el problema es simplemente que necesita ejecutarlo desde un símbolo del sistema elevado, como se señaló en un comentario anterior. .
Stefan
15

parece que mi terminal hace las confirmaciones con mi nombre de usuario, pero las empuja con el otro

El nombre y el correo electrónico del autor y del autor (que son importantes para GitHub) se derivan de:

git config user.name
git config user.email

Sin embargo, como se menciona en git configy git commit-tree, esos valores pueden ser anulados por variables de entorno:

GIT_AUTHOR_NAME
GIT_AUTHOR_EMAIL
GIT_COMMITTER_NAME
GIT_COMMITTER_EMAIL

Así que revisa esas variables.

Las cosas vuelven a funcionar normalmente si fuerzo al usuario a entrar en .git/configun repositorio, pero no creo que esa sea la buena opción.

Pero debería ser una buena solución.
Cuando utilizo una URL https, siempre especifico el usuario en ella para asegurarme de que la autenticación se realiza con el usuario correcto.

http://[email protected]/USER/REPO.git
VonC
fuente
¡Gracias por tu respuesta VonC! Desafortunadamente, mis git configcredenciales son correctas y no hay variables de /username/.bashrc
entorno
@ Yinfei84, no obstante, verifique su envsalida ' '.
VonC
@ Yinfei84, ¿qué pasaría si (para probarlo) estableces esas variables explícitamente e intentas un commit y un push? ¿Funcionaría mejor entonces?
VonC
Simplemente lo hice y el problema persiste.
Yinfei
2
Disculpe si no estaba claro, quise decir que funcionó si http://[email protected]/USER/REPO.git
obligo
9

Primero se ejecuta una solución temporal y killall ssh-agentluego se agregan las claves ssh generadas para la cuenta que necesita usarssh-add ~/.ssh/id_4shameer

Nos ayudará a trabajar en varias cuentas de github cuando obtengamos el error de tipo ERROR: Permission to user/repo-git.git denied to username.

mshameer
fuente
1
Hice eso después de haber eliminado cualquier entrada de Github del llavero de MacOS , y funcionó perfectamente. Dos puntos, después del killall, el ssh-agent debe reiniciarse con eval "$(ssh-agent -s)", y el ssh-addcomando debe ejecutarse con sudo.
arvymetal
7

Si está utilizando MAC, vaya a Acceso a Llaveros y elimine la entrada del usuario para el que no desea acceder a git.

Chitrapal Singh
fuente
4

La solución para mí fue agregar una entrada en mi archivo ~ / .ssh / config para github. Tuve que hacer esto porque:

  1. Tenía varias cuentas de github con la misma clave (¡no hagas esto!)
  2. cuando 'git push' usando ssh, su computadora toma id_rsa por defecto y lo usa como su identidad ssh.
  3. github no puede (como era de esperar) desconfigurar a qué cuenta te refieres, ya que basa la cuenta en la clave que se presenta, que si está vinculada a más de una cuenta, provoca un dolor como este. El asesino es que, durante mucho tiempo, me estaba saliendo con la mía y las cosas simplemente funcionaron.

La entrada que agregué es:

Host github.com
    Hostname github.com
    Port 22
    User waterproofpatch
    IdentityFile ~/.ssh/id_rsa_waterproofpatch

Había creado una nueva clave, única para mi cuenta, como id_rsa_waterproofpatch. Esta entrada en mi configuración de ssh especifica que para las conexiones a github.com, deseo presentar esta clave.

Otra solución probablemente hubiera sido iniciar sesión en la otra cuenta, eliminar la clave ssh duplicada.

parche impermeable
fuente
2

Tuve un problema similar y resultó que el problema era el hecho de que el archivo de clave pública contenía mi dirección de correo electrónico en la última línea. Eso pareció anular la configuración de Usuario en mi configuración. Tan pronto como eliminé mi correo electrónico del archivo .pub (y lo volví a cargar en mi repositorio), Git se conectó con el usuario correcto.

Miguel
fuente
Esto funcionó para mí. No estoy seguro de por qué el identificador en el archivo de clave pública estaba originalmente en el formato 'nombre @ dominio', pero lo estaba.
Brian Wagner
1

Lo que funcionó para mí fue usar la URL https del repositorio de Github en lugar de la URL ssh . Fui a la página del proyecto Github y copié la URL https en mi portapapeles, y luego la pegué en el segundo comando a continuación:

git remote rm origin
git remote add origin https://[...]
Keith Bennett
fuente
1

¡Qué dolor en el trasero!

problema:

  1. crear un repositorio en git hub
  2. clonar a la máquina local
  3. no puedo empujar 403.

gira por una razón desconocida, git push estaba usando el usuario incorrecto. Tengo un par de ID de usuario de git hub diferentes. Trabajo para 2 empresas diferentes y también tengo una identificación de estudiante

Estoy trabajando en una mac. esto es lo que finalmente hice

1) eliminar credential.helper

  • de alguna manera cómo el asistente de credenciales se configuró en osxkeychain
  • cuando comencé el llavero, hice clic en inicio de sesión, contraseñas y busqué github, encontré 3 entradas. No tengo idea de cómo llavero podría saber cuál usar.

a. necesita averiguar dónde está configurado credential.helper

git config --local credential.helper
git config --global credential.helper
git config --system credential.helper

si. una vez que encuentre el archivo fig correcto, retírelo de la siguiente manera

git config --global --unset credential.helper

Ahora, en mi repositorio local, pirateé el archivo .git / config

Cambié

    url = https://github.com/aedavids/lab3RotationProject.git

a

    url = https://[email protected]/aedavids/lab3RotationProject.git
AEDWIP
fuente
1

En mi caso particular, el problema fue que estaba usando un .netrcacceso github.comy estaba configurado con un token de un usuario diferente:

machine github.com login <another-user-token>
Travis Clarke
fuente
0

limpiar el llavero no ayudó ... tuve que ssh-add -Dvolver a agregar la clave conssh-add <keyfile>

Victor Pudeyev
fuente
0

Resolví este problema eliminando (o cambiando el nombre a * .bak) el archivo id_rsa e id_rsa.pub en MacOS High Sierra. Idea de aqui .

Tengo redireccionamientos de host personalizados en ~ / .ssh / config que deberían aplicarse pero usé un usuario incorrecto antes de cambiar el nombre de los dos archivos ...

Codificación de su vida
fuente
0

Eso es lo que funcionó para mí:

  1. Cambiar las credenciales dentro de .git-credentials
  2. Cambiar el nombre de usuario global y el correo electrónico de usuario dentro de .gitconfig
reshetech
fuente
0

Lo que funcionó para mí al eliminar el repositorio y agregarlo nuevamente:

git remote rm origin
git remote add origin [email protected]:fguillen/MyApp.git
fguillen
fuente
0

Tengo el mismo problema en Windows10 incluso después de desinstalar mi git, como @ user542833 dice que se debe a que Windows cache y usted debe eliminar las credenciales de Github en sus ventanas Credential Managery cuando intenta presionar nuevamente, Windows le pide su credencial y la configura nuevamente.

ghazaleh javaheri
fuente
esto funcionó a veces para mí, pero también a veces no.
bvdb
0

Acabo de pasar 6 horas averiguando esto cuando intentaba pasar a un nuevo repositorio de páginas de GitHub en una nueva cuenta.

Incluso después de configurar la configuración user.name y user.email, se establecería de forma predeterminada en mi cuenta principal.

Esto se debe a que la clave ssh será por defecto id_rsa (mi cuenta principal).

Para usar la nueva cuenta tuve que ejecutar:

ssh-add ~/.ssh/my_new_key

que luego hará que git use la nueva clave al presionar.

jmoz
fuente