Eliminar credenciales de Git

624

Estoy trabajando con varios repositorios, pero últimamente solo estaba trabajando en uno interno y todo fue genial.

Hoy tuve que comprometer e insertar código en otro, pero tengo algunos problemas.

$ git push appharbor master
error: The requested URL returned error: 403 while accessing https://[email protected]/mitivo.git/info/refs?service=git-receive-pack
fatal: HTTP request failed

No hay nada que pueda hacer, eso traería la contraseña nuevamente.

¿Cómo puedo restablecer las credenciales en mi sistema para que Git me solicite la contraseña de ese repositorio?

Yo he tratado:

  • git config --global --unset core.askpass

para desarmar la contraseña

  • git config credential.helper 'cache --timeout=1'

para evitar credenciales de caché ...

Nada parece funcionar; ¿Alguien tiene una idea mejor?

balexandre
fuente
¿Tienes un ~/.netrcarchivo?
robinst
2
@robinst es una máquina de Windows, y no puedo encontrar ese archivo, ni siquiera de Git Bash ...
balexandre
@balexandre para una máquina Windows, prefiero usar el nuevo asistente de credenciales (git 1.8.3) netrc, que almacenaría múltiples credenciales en un archivo cifrado . Es mejor que ingresar su contraseña cada vez para cada sesión, ya que el caché solo "almacena en caché" la contraseña durante un tiempo determinado. Vea un ejemplo completo aquí .
VonC
No tengo .netrc. Tengo un archivo en ~ (C: \ Users \ Myself) llamado .git-credentials, pero borrarlo no funcionó, todavía estoy conectado a Git Shell. Además, el Administrador de credenciales del panel de control no parece estar almacenando nada. Los archivos de configuración Git locales y globales parecen estar bien. Heredé mi estación de trabajo de un empleado que se fue, por lo que podría ser que haya configurado un mecanismo de almacenamiento en caché de credenciales poco ortodoxo que no tengo idea de cómo apagarlo. Espero que este comportamiento NO sea el predeterminado de Git Windows. En Mac, el almacenamiento en caché de credenciales es el predeterminado, pero al menos se muestra en Keychain Access.
damix911
Una respuesta más completa que también funciona en Linux, Windows y Mac OS X, consulte stackoverflow.com/a/39944557/3906760
MrTux

Respuestas:

655

Si este problema se produce en una máquina con Windows, haga lo siguiente.

  • Ir al administrador de credenciales
  • Ir a las credenciales de Windows
  • Eliminar las entradas en Credenciales genéricas
  • Intenta conectarte de nuevo. Esta vez, debería solicitarle el nombre de usuario y la contraseña correctos.

Ir al administrador de credenciales

Vaya a Credenciales de Windows y elimine las entradas en Credenciales genéricas

Venkataramana Madugula
fuente
44
Esto solo es relevante si tu credential.helper=manager. Para probar este tipo git config --list. Si está configurado a storecontinuación, las credenciales no se almacenan en el almacén de credenciales, sino que se almacenan sin cifrar.
Liam
3
Solo tuve que eliminar la credencial nombrada git:https://github.comy se me solicitó ingresar mi nombre de usuario / contraseña la próxima vez que cloné un repositorio usando PyCharm. Tenía más de una cuenta de github y la incorrecta estaba almacenada en caché.
dotcomly
22
Si alguien está buscando esto en una máquina localizada en alemán, está "Anmeldeinformationsverwaltung" en el camino Systemsteuerung\Alle Systemsteuerungselemente\Anmeldeinformationsverwaltung.
davidenke
3
Alternativamente, puede cambiar el usuario / pase en el Credential Manager. Eso también funcionó para mí
Daniel Lerps
Eliminar las credenciales resolvió mi 403error a través de Bitbucket.
Eido95
674

El caché de credenciales de Git ejecuta un proceso de demonio que almacena en caché sus credenciales en la memoria y las entrega a pedido. Por lo tanto, matar su git-credential-cache: el proceso daemon arroja todo esto y resulta en volver a solicitarle su contraseña si continúa utilizando esto como la opción cache.helper.

También puede deshabilitar el uso de la caché de credenciales de Git usando git config --global --unset credential.helper. Luego restablezca esto, y continuaría teniendo las credenciales en caché disponibles para otros repositorios (si corresponde). Es posible que también deba hacerlo git config --system --unset credential.helpersi esto se configuró en el archivo de configuración del sistema (por ejemplo, Git para Windows 2).

En Windows, es mejor que use el ayudante de administrador ( git config --global credential.helper manager). Esto almacena sus credenciales en el almacén de credenciales de Windows que tiene una interfaz del Panel de control donde puede eliminar o editar sus credenciales almacenadas. Con esta tienda, sus datos están protegidos por su inicio de sesión de Windows y pueden persistir en varias sesiones. El asistente de administrador incluido en Git para Windows 2.x ha reemplazado el asistente anterior wincred que se agregó en Git para Windows 1.8.1.1. Un asistente similar llamado winstore también está disponible en línea y se utilizó con GitExtensions, ya que ofrece una interfaz más guiada por GUI. El asistente de administrador ofrece la misma interfaz GUI que winstore .

Extracto de la página de soporte de Windows 10 que detalla el administrador de credenciales de Windows:

Para abrir Credential Manager, escriba "credential manager" en el cuadro de búsqueda de la barra de tareas y seleccione Credential Manager Control panel .

Y luego seleccione Credenciales de Windows para editar (= eliminar o modificar) las credenciales de git almacenadas para una URL determinada.

patthoyts
fuente
198
Encontré el panel de control de credenciales de Windows en Control Panel\User Accounts\Credential ManagerWindows 7
Steve Pitchers
2
¿Acabar con el proceso no deja rastros en alguna parte, de modo que la contraseña aún se pueda acceder? Según el manual de git, se almacenan en "texto plano".
Ovnis
1
En Windows 8.1, las "Credenciales de Windows" estaban en Credenciales genéricas y git: gitlab.com o el servidor git de su elección.
Jeff
55
En Windows 8/10, la configuración detallada de la cuenta de usuario se encuentra en el panel de control "clásico", no en la aplicación "Configuración" (interfaz de usuario moderna). Solo para evitar confusiones.
DanielH
1
en windows 10 Vaya a Panel de control \ Todos los elementos del Panel de control \ Administrador de credenciales. Podría haber una Credencial Genérica para GitHub. Puede actualizar el nombre de usuario y la contraseña allí.
Eldhose Abraham
156

Reescriba:

$ git config credential.helper store

Y luego se le pedirá que ingrese sus credenciales nuevamente.

ADVERTENCIA

El uso de este asistente almacenará sus contraseñas sin cifrar en el disco

Fuente: https://git-scm.com/docs/git-credential-store

aaafly
fuente
37
este comando no pide ingresar mis credenciales nuevamente, este comando no está haciendo nada
Shirish Herwade
3
@ShirishHerwade intente git pull, luego verá la pantalla de aviso
ismailcem
2
@jkokorian Para deshacer este comando, elimine las líneas relevantes de .git/config.
Zenadix
110

Me enfrenté al mismo problema que el OP. Estaba tomando mis viejas credenciales de Git almacenadas en algún lugar del sistema y quería usar Git con mis nuevas credenciales, así que ejecuté el comando

$ git config --system --list

Mostró

credential.helper=manager

Cada vez que lo realizaba git push, tomaba mi antiguo nombre de usuario que establecí hace mucho tiempo atrás, y quería usar una nueva cuenta de GitHub para impulsar los cambios. Más tarde descubrí que mis antiguas credenciales de cuenta de GitHub estaban almacenadas en Panel de controlCuentas de usuarioAdministrador de credencialesAdministrar credenciales de Windows .

Administrar credenciales de Windows

Acabo de eliminar estas credenciales y cuando lo realicé git pushme pidió mis credenciales de GitHub, y funcionó de maravilla.

Mourya
fuente
Buena ilustración de lo reciente del reciente Git Credential Manager ( github.com/Microsoft/Git-Credential-Manager-for-Windows ) que funciona almacenando credenciales ( github.com/Microsoft/Git-Credential-Manager-for-Windows/ cuestiones / ... ) +1
VonC
1
@VonC Me llevó un día descubrir esto, ya que no conocía este mecanismo de almacenamiento de credenciales.
Mourya
Es bastante reciente de hecho. Gracias por mencionarlo aquí.
VonC
Esta es probablemente la mejor respuesta que la "aceptada", lo que para mí implica eliminar todas las credenciales. Definitivamente me ayudó.
VictorLegros
53

Intenta usar el siguiente comando.

git credential-manager

Aquí puede obtener varias opciones para administrar sus credenciales (consulte la pantalla a continuación).

Ingrese la descripción de la imagen aquí

O incluso puede probar directamente este comando:

git credential-manager uninstall

Esto comenzará a solicitar contraseñas nuevamente en cada solicitud de interacción del servidor.

Himanshu Aggarwal
fuente
11
¿Por qué recibo -git: 'credential-manager' is not a git command. See 'git --help'.
Saikat
2
No estoy seguro, por qué no funciona para usted, pero incluso en la última versión de git, está disponible. Consulte este enlace para obtener más información: git-scm.com/book/gr/v2/Git-Tools-Credential-Storage
Himanshu Aggarwal
3
Got removal failed. U_U Press any key to continue... fatal: InvalidOperationException encountered. Cannot read keys when either application does not have a console or when console input has been redirected from a file. Try Console.Read.(con el bonito U_Uemoji de la nada :))
jeromej
1
La única solución que funcionó para mí en Windows con GitBash.
alain.janinm
quizás a un lado, pero instalé git a través de choco, y este método [desinstalar] fue bueno para mí para obtener un repositorio en una computadora implementada sin almacenar credenciales
beep_check
32

Encontré algo que funcionó para mí. Cuando escribí mi comentario al OP, no pude verificar el archivo de configuración del sistema:

git config --system -l

Muestra un

credential.helper=!github --credentials

línea. Lo desarmado con

git config --system --unset credential.helper

y ahora se olvidan las credenciales.

damix911
fuente
2
Ankur, es posible que deba ejecutar el comando sugerido de forma similar de 2 a 3 veces si ha configurado un par de ayudantes de credenciales. git config --global --unset credential.helpery tal vez solo git config --unset credential.helperen su repositorio si de alguna manera lo hubiera establecido explícitamente allí.
dragon788
Gracias por la solución. Solo un detalle: en mi caso tuve que iniciar el símbolo del sistema como administrador
A.Joly
30

En mi caso, Git está utilizando Windows para almacenar credenciales.

Todo lo que tiene que hacer es eliminar las credenciales almacenadas en su cuenta de Windows:

Menú de credenciales de Windows

SoliQuiD
fuente
1
¿Cómo difiere esto de esta respuesta ? o este ?
Liam
20
git config --list

se mostrará credential.helper = manager(esto está en una máquina con Windows)

Para deshabilitar este nombre de usuario / contraseña en caché para su carpeta git local actual, simplemente ingrese

git config credential.helper ""

De esta manera, git solicitará la contraseña cada vez, ignorando lo que está guardado dentro del "administrador".

Zhe Hu
fuente
Tengo el siguiente error git: 'credential-' is not a git command. See 'git --help'., pero por seguridad estoy votando esta respuesta porque es la única que me hizo solicitar una nueva contraseña. Sin embargo, me pregunto si esto no es solo enmascarar el problema (¿realmente se eliminó la contraseña?)
ribamar
No: lo rm -rf ~/.git-credentialshizo. Tenga en cuenta que puede variar ( git help credential-store)
ribamar
lo siento, esto realmente no funciona. solicitará la contraseña una vez más y la almacenará nuevamente. eliminaría mi voto a favor si está permitido.
ribamar
git config --unset credential.helperborra la entrada. Esta respuesta simplemente lo establece en una cadena vacía y produce el error que @ribamar describió en los comentarios.
Dark Castle
15

En Windows 2003 Server con "wincred" *, ninguna de las otras respuestas me ayudó. Tuve que usar cmdkey.

  • cmdkey /list enumera todas las credenciales almacenadas.
  • cmdkey /delete:Target elimina la credencial con el nombre "Destino".

cmdkey / list;  cmdkey / delete: Target

(* Por "wincred" quiero decir git config --global credential.helper wincred)

ericbn
fuente
Sí, cmdkeyes la contraparte de la línea de comandos de las Credenciales de Windows descritas en la respuesta elegida.
nicobo
15

Este error aparece cuando está utilizando varias cuentas de Git en la misma máquina.

Si está utilizando macOS, puede eliminar las credenciales guardadas de github.com .

Siga los pasos a continuación para eliminar las credenciales de github.com .

  1. Acceso a llavero abierto
  2. Encuentra github
  3. Seleccione github.com y haga clic derecho sobre él
  4. Eliminar "github.com"
  5. Intente nuevamente presionar o tirar para git y le pedirá las credenciales.
  6. Ingrese credenciales válidas para la cuenta del repositorio.
  7. Hecho

    ingrese la descripción de la imagen aquí

Pratik Patel
fuente
Gracias, esto funciona perfectamente en mac os
babygame0ver
13

Necesita iniciar sesión con github usernameypassword

Para borrar el nombre de usuario y contraseña en windows

Panel de control \ Cuentas de usuario \ Administrador de credenciales

Editar la credencial de Windows

Elimine el usuario existente y ahora vaya al símbolo del sistema escriba el comando push que muestra una ventana emergente de github para ingresar el username/ emaily password.

Ahora podemos empujar el código después de cambiar el usuario.

Amit K
fuente
13

Obtuve el mismo error al hacer un 'git pull' y así es como lo solucioné.

  1. Cambiar repositorio a HTTPS
  2. Ejecutar comando git config --system --unset credential.helper
  3. Ejecutar comando git config --system --add credential.helper manager
  4. Comando de prueba git pull
  5. Ingrese las credenciales en la ventana de inicio de sesión que aparece.
  6. Git pull completado con éxito.
Amer Bashoeb
fuente
--¿sistema? ¿Qué hay de --global? ¿Qué pasa sin alcance? ¿Qué significa el ámbito de configuración?
masterxilo 01 de
Solo con el paso 1 resolvió mi problema.
zzxwill
11

Elimine esta línea de su archivo .gitconfig ubicado en la carpeta de usuario actualmente conectada de Windows:

[credential]
helper = !\"C:/Program Files (x86)/GitExtensions/GitCredentialWinStore/git-credential-winstore.exe\"

Esto funcionó para mí y ahora, cuando presiono el control remoto, me pide mi contraseña nuevamente.

Liviu M.
fuente
11

Debe actualizarlo en su Administrador de credenciales.

Vaya a Panel de control> Cuentas de usuario> Administrador de credenciales> Credenciales de Windows. Verá las credenciales de Git en la lista (por ejemplo, git: https: //). Haga clic en él, actualice la contraseña y ejecute el comando git pull / push desde su Git bash y no arrojará más mensajes de error.

ChiragBhalgami
fuente
10

Utilizando la última versión de git para Windows en Windows 10 Professional y tuve un problema similar por el cual tengo dos cuentas diferentes de GitHub y también una cuenta de Bitbucket, por lo que las cosas se volvieron un poco confusas para VS2017, extensiones de git y git bash.

Primero verifiqué cómo git manejaba mis credenciales con este comando (ejecute git bash con comandos elevados o obtendrá errores):

git config --list

Encontré la entrada Credential Manager, así que hice clic en el botón INICIO> escribí Credential Manager y hice clic con el botón izquierdo en el ícono de seguridad amarillo del administrador de credenciales que lanzó la aplicación. Luego hice clic en las pestañas Credenciales de Windows y encontré la entrada para mi cuenta git actual que resultó ser Bit-bucket, así que eliminé esta cuenta.

Pero esto no funcionó, por lo que el siguiente paso fue desarmar las credenciales e hice esto desde el directorio del repositorio en mi computadora portátil que contiene el proyecto GitHub que estoy tratando de enviar al control remoto. Escribí el siguiente comando:

git config --system --unset credential.helper

Luego hice un git push y se me solicitó un nombre de usuario de GitHub que ingresé (el correcto que necesitaba) y luego la contraseña asociada y todo se presionó correctamente.

No estoy seguro de la cantidad de problemas que esto está sucediendo, la mayoría de las personas probablemente trabajen desde un único repositorio, pero tengo que trabajar en varios y usar diferentes proveedores, por lo que puede encontrar este problema nuevamente.

Tahir Khalid
fuente
funcionó para mí ... gracias
Krishnamoorthy Acharya
8

En mi caso, no pude encontrar las credenciales guardadas en el Administrador de credenciales de Windows (Windows 7).

Pude restablecer mis credenciales ejecutando

git config --global credential.helper wincred

Honestamente, fue un gran saludo Mary para ver si eliminaría mis credenciales y realmente funcionó.

Jeff LaFay
fuente
Esto funcionó para mí; NO tenía una entrada en el Administrador de credenciales para eliminar.
bdwakefield
7

Puede eliminar la línea credential.helper=!github --credentialsdel siguiente archivo C:\Program Files\Git\mingw64\etc\gitconfigpara eliminar las credenciales de git

Yoan Pumar
fuente
7
  1. Ir C:\Users\<current-user>
  2. verificar .git-credentialsarchivo
  3. Eliminar contenido o modificar según su requisito
  4. Reinicia tu terminal
Dinesh Patil
fuente
la única solución que funcionó para mí
Wachburn
7

En Windows, al menos, git remote show [remote-name]funcionará, p. Ej.

git remote show origin
Jason S
fuente
No estoy seguro de por qué el voto negativo. Funciona Me quedo atascado con todo lo demás.
Jason S
... y lo usé nuevamente hoy, con éxito. Cada vez que cambio mi contraseña en el trabajo necesito hacer esto.
Jason S
2
Funcionó un encanto para mí.
IronAces
Igual que aquí. Ni siquiera tiene que estar en un directorio de repositorios
Nicola Musatti
6

Si desea que git olvide las credenciales guardadas y vuelva a ingresar el nombre de usuario y la contraseña, puede hacerlo usando el siguiente comando:

git credential-cache exit

Después de ejecutar el comando anterior, si intenta presionar algo, proporcionará la opción de ingresar el nombre de usuario y la contraseña.

amitshree
fuente
3

Lo que finalmente solucionó esto para mí fue usar el escritorio de GitHub, ir a la configuración del repositorio y eliminar user: pass @ de la url del repositorio. Luego, intenté presionar desde la línea de comando y se me solicitaron las credenciales de inicio de sesión. Después de ponerlos en todo, todo volvió a la normalidad. Tanto Visual Studio como la línea de comandos están funcionando y, por supuesto, el escritorio de GitHub.

Escritorio GitHub-> Repositorio-> Configuración del repositorio-> pestaña Remoto

Cambiar el repositorio remoto primario (origen) de:

https: //pork@[email protected]/MyProject/MyProject.git

A:

https://github.com/MyProject/MyProject.git

Clic en Guardar"

Las credenciales serán borradas.

Nick Pirocanac
fuente
Restablecer el origen al mismo desde la línea de comandos en Windows ha resuelto mi problema. Estoy usando GitLab, así que no pude usar GitHub Desktop para esto.
David Vargas el
3

Para usuarios de macOS:

Este error aparece cuando está utilizando varias cuentas de Git en la misma máquina.

Siga los pasos a continuación para eliminar las credenciales de github.com.

  1. Ir al buscador
  2. Ir a aplicaciones
  3. Ir a la carpeta de utilidades
  4. Acceso a llavero abierto
  5. Seleccione github.com y haga clic derecho sobre él

    Eliminar "github.com"

Intente nuevamente presionar o tirar para git y le pedirá las credenciales. Ingrese credenciales válidas para la cuenta del repositorio. Hecho

iamsurajdc
fuente
3

Para Windows 10, vaya a la ruta a continuación,

Panel de control \ Cuentas de usuario \ Administrador de credenciales

Habrá 2 pestañas en esta ubicación,

  1. Credenciales web y 2. Credenciales de Windows.

Haga clic en la pestaña de credenciales de Windows y aquí puede ver sus credenciales de github almacenadas, en el encabezado "Credenciales genéricas".

Puede eliminarlos de aquí e intentar volver a clonar: ahora solicitará un nombre de usuario / contraseña, ya que acabamos de eliminar la credencial almacenada de los sistemas Windows 10

Programación AAD
fuente
2

Para borrar Git Credentials Managers para el caché de Windows:

rm $env:LOCALAPPDATA\GitCredentialManager\tenant.cache

o

rm %LOCALAPPDATA%\GitCredentialManager\tenant.cache
Chris F Carroll
fuente
2

Pruebe esto cuando nada de lo mencionado anteriormente funcione para usted.

git config credential.helper 'cache --timeout=30'

esto eliminará el caché cada 3 segundos y pedirá nombre de usuario y contraseña. Puede volver a ejecutar el comando con valores de tiempo de espera aumentados.

kumar viril
fuente
1

En nuestro caso, eliminar la contraseña en el archivo .git-credentials del usuario funcionó para nosotros.

c:\users\[username]\.git-credentials
Tarifas
fuente
Sí, varias otras personas ya lo han dicho en numerosas ocasiones
Liam
1

A partir de la respuesta altamente votada de @patthoyts ( https://stackoverflow.com/a/15382950/4401322 ):

Su respuesta usa pero no explica las configuraciones "local" vs. "global" vs. "system". La documentación oficial de git para ellos está aquí y vale la pena leerla.

Por ejemplo, estoy en Linux y no uso una configuración del sistema , por lo que nunca uso un --systemindicador, pero comúnmente necesito diferenciar entre --localy --globalconfiguraciones.

Mi caso de uso es que tengo dos credenciales de Github; uno para el trabajo y otro para jugar.

Así es como manejaría el problema:

$ cd work
# do and commit work
$ git push origin develop
# Possibly prompted for credentials if I haven't configured my remotes to automate that. 
# We're assuming that now I've stored my "work" credentials with git's credential helper.

$ cd ~/play 
# do and commit play
$ git push origin develop                                                                   
remote: Permission to whilei/specs.git denied to whilei.                
fatal: unable to access 'https://github.com/workname/specs.git/': The requested URL returned error: 403

# So here's where it goes down:
$ git config --list | grep cred
credential.helper=store # One of these is for _local_
credential.helper=store # And one is for _global_

$ git config --global --unset credential.helper
$ git config --list | grep cred
credential.helper=store # My _local_ config still specifies 'store'
$ git config --unset credential.helper
$ git push origin develop
Username for 'https://github.com': whilei
Password for 'https://[email protected]':
Counting objects: 3, done.
Delta compression using up to 12 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 1.10 KiB | 1.10 MiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/whilei/specs.git
   b2ca528..f64f065  master -> master

# Now let's turn credential-helping back on:
$ git config --global credential.helper "store"
$ git config credential.helper "store"
$ git config --list | grep cred
credential.helper=store # Put it back the way it was.
credential.helper=store

También vale la pena señalar que hay formas de evitar este problema por completo, por ejemplo, puede usar ~/.ssh/config's' con claves SSH asociadas para Github (una para el trabajo, una para jugar) y hosts remotos con nombres personalizados correspondientes para resolver la autenticación contextualizando también.

irbanana
fuente
1

Para agregar a https://stackoverflow.com/a/41111629/579827 de @ericbn aquí hay ejemplos de comandos que he incrustado en un script que ejecuto para actualizar todas mis contraseñas cada vez que se renuevan. Probablemente no se pueda usar tal cual, ya que es bastante específico, pero muestra el uso de la vida real cmdkey.exe.

⚠ Este es un script de shell ejecutado en cygwin

⚠ Esto funciona porque utilizo repositorios privados de git que todos se autentican con la misma contraseña (probablemente no desee recorrer con las mismas credenciales, pero puede reutilizar este /listcomando de muestra para extraer una lista de credenciales ya registradas) ⚠

entries=`cmdkey.exe /list: | grep git | sed -r -e 's/^[^:]+:\s*(.*)$/\1/gm'`
for entry in ${entries}
do
    cmdkey.exe "/delete:${entry}"
    cmdkey.exe "/generic:${entry}" "/user:${GIT_USERNAME}" "/pass:${GIT_PASSWORD}"
done
nicobo
fuente
0

Si está autenticado utilizando su par de claves, puede eliminar o mover su clave privada, o detener el agente de claves e intentarlo.

Munim
fuente
2
está usando https, por lo que no hay ninguna clave involucrada aquí
CharlesB