Git push requiere nombre de usuario y contraseña
Cloné un repositorio Git desde mi cuenta de GitHub a mi PC.
Quiero trabajar tanto con mi PC como con mi computadora portátil, pero con una cuenta de GitHub.
Cuando intento enviar o extraer GitHub usando mi PC, se requiere un nombre de usuario y contraseña, ¡pero no cuando estoy usando la computadora portátil!
No quiero escribir mi nombre de usuario y contraseña cada vez que interactúo con origin
. ¿Que me estoy perdiendo aqui?
Una causa común es la clonación utilizando el valor predeterminado (HTTPS) en lugar de SSH. Puede corregir esto yendo a su repositorio, haciendo clic en "Clonar o descargar", luego haciendo clic en el botón "Usar SSH" encima del campo URL y actualizando la URL de su control remoto de origen de esta manera:
git remote set-url origin [email protected]:username/repo.git
Puedes verificar si has agregado el control remoto como HTTPS o SSH usando:
git remote -v
Esto está documentado en GitHub: Cambio de URL remotas de HTTPS a SSH .
Autenticación permanente con repositorios Git
Ejecute el siguiente comando para habilitar el almacenamiento en caché de credenciales :
$ git config credential.helper store
$ git push https://github.com/owner/repo.git
Username for 'https://github.com': <USERNAME>
Password for 'https://[email protected]': <PASSWORD>
También debes especificar que el almacenamiento en caché expire ,
git config credential.helper 'cache --timeout 7200'
Después de habilitar el almacenamiento en caché de credenciales, se almacenarán en caché durante 7200 segundos (2 horas) . 43.200 s = 12 h (iniciar sesión una vez al día) también podría ser una opción razonable para algunos.
Como comentó SebastianH , también podemos usar comandos similares para configurar esto no por repositorio sino globalmente:
git config --global credential.helper store
git config --global credential.helper 'cache --timeout 7200'
Me encontré con el mismo problema y la solución más simple que encontré fue usar la URL SSH en lugar de HTTPS:
ssh://[email protected]/username/repo.git
Y no esto:
https://github.com/username/repo.git
Ahora puedes validar solo con la clave SSH en lugar de username
y password
.
Además de cambiar a SSH, también puedes seguir usando HTTPS, si no te importa escribir tu contraseña en texto claro. Pon esto en tu ~/.netrc
y no te pedirá tu nombre de usuario/contraseña (al menos en Linux y Mac):
machine github.com
login <user>
password <password>
Adición (ver el segundo comentario de VonC): en Windows el nombre del archivo es %HOME%\_netrc
.
Lea también el primer comentario de VonC en caso de que desee cifrar.
Otra adición (ver el comentario del usuario137717) que puedes usar si tienes Git 1.7.10 o posterior .
Guarde en caché su contraseña de GitHub en Git usando un asistente de credenciales :
Si está clonando repositorios de GitHub usando HTTPS, puede usar un asistente de credenciales para indicarle a Git que recuerde su nombre de usuario y contraseña de GitHub cada vez que se comunique con GitHub.
Esto también funciona en Linux, Mac y Windows.
Para los no iniciados que están confundidos por las respuestas anteriores, pueden hacer:
git remote -v
Que responderá con algo como
origin https://[email protected]/yourname/yourrepo.git (fetch)
origin https://[email protected]/yourname/yourrepo.git (push)
Luego puede ejecutar el comando que muchos otros han sugerido, pero ahora conoce su nombre y su repositorio desde arriba, por lo que puede simplemente cortar y pegar yourname/yourrepo.git
desde arriba en:
git remote set-url origin [email protected]:yourname/yourrepo.git