fatal: no se pudo leer el nombre de usuario para 'https://github.com': no ​​existe tal archivo o directorio

99

Tengo el siguiente problema cuando intento extraer código usando git Bash en Windows:

fatal: could not read Username for 'https://github.com': No such file or directory

Ya intenté implementar la solución aceptada proporcionada aquí:

... pero el problema persiste. Después de agregar / eliminar el origen, sigo recibiendo el mismo error.

noobie-php
fuente
¿Configuraste el nombre de usuario? git config --global user.name "Your Name Here"
Raúl Andres
Ya lo intenté, pero no se refiere a mi nombre de usuario de git, creo que está dando problemas para el nombre de usuario del repositorio de git al que estoy llamando aquí.
noobie-php

Respuestas:

70

Siga los pasos para configurar las claves SSH aquí: https://help.github.com/articles/generating-ssh-keys

O

git remote add origin https://{username}:{password}@github.com/{username}/project.git
Tony Zampogna
fuente
3
La segunda opción no funcionó porque ya había agregado 'origen github'. Eliminé el origen [git remote remove origin] y luego escribí lo que está en la respuesta con mi nombre de usuario y contraseña y funcionó bien.
P_Rein
10
en lugar de eliminar y volver a agregar el origen, también puede cambiar la URL usandogit remote set-url origin https://{username}:{password}@github.com/...
Chris
10
La solución @Chris funciona, pero almacena la contraseña de la cuenta de github del usuario y permite que se lea con solo escribirlagit remote -v
Jefferson Silva
¡La opción de Chris funcionó para mí! Seguí con Jefferson Silva y funcionó bien. Todavía tengo un error: cannot spawn sh: No such file or directorymensaje ...
TheSciGuy
14

Enfrenté exactamente el mismo problema. Este problema ocurrió cuando cloné usando HTTPS URL y luego intenté impulsar los cambios usando Git Bash en Windows usando:

git clone https://github.com/{username}/{repo}.git

Sin embargo, cuando usé la URL SSH para clonar, este problema no ocurrió:

git clone [email protected]:{username}/{repo}.git
Fayaz
fuente
3
Está bien, pero ¿por qué ocurre esto?
Gili
Debido a un error en msysgit: github.com/msysgit/msysgit/issues/153
Fayaz
Recibo este mensaje dentro de un contenedor Docker que se ejecuta en gitlab. La imagen base es python:3.7-slim. Entonces no está relacionado con Windows.
Martin Thoma
En mi caso, era un repositorio de organización que usaba ssh: //git.gartner.com
Ankush
11

Para mí, nada funcionó desde lo sugerido anteriormente, utilizo el git pullscript de shell de jenkins y aparentemente toma un nombre de usuario incorrecto. Pasé años antes de encontrar una manera de solucionarlo sin cambiar a SSH.

En la carpeta del usuario, cree el archivo .gitconfig (si aún no lo tiene) y ponga sus credenciales en el siguiente formato:, https://user:[email protected]más información . Después de su archivo .gitconfig, enlace a esas credenciales, en mi caso fue:

[credential] helper = store --file /Users/admin/.git-credentials

Ahora git siempre usará esas credenciales pase lo que pase. Espero que ayude a alguien, como me ayudó a mí.

Katia
fuente
para mí que sólo funcionaba cuando pongo [credential] helper = store --file /..../.git-credentialsen .git/configen mi directorio de trabajo
Kirill Oficerov
11

Tenga en cuenta que si recibe este error en su lugar:

fatal: could not read Username for 'https://github.com': No error

Entonces necesitas actualizar tu Git a la versión 2.16o posterior.

Rosdi Kasim
fuente
7

Encontré mi respuesta aquí :

edite ~/.gitconfigy agregue lo siguiente:

[url "[email protected]:"]
 insteadOf = https://github.com/

Aunque resuelve un problema diferente, el código de error es el mismo ...

Louis Parkin
fuente
6

Si desea continuar, use https en lugar de ssh, y evite ingresar su nombre de usuario y contraseña por razones de seguridad.

También puede probar el token Github OAuth , luego puede hacerlo git config remote.origin.url 'https://{token}@github.com/{username}/{project}.git' o git remote add origin 'https://{token}@github.com/{username}/{project}.git'

¡Esto funciona para mí!

luna en espiral
fuente
4

Este error también puede ocurrir al intentar clonar una URL HTTP no válida. Por ejemplo, este es el error que recibí al intentar clonar una URL de GitHub que tenía algunos caracteres de diferencia:

$ git clone -v http://github.com/username/repo-name.git
Cloning into 'repo-name'...
Username for 'https://github.com': 
Password for 'https://github.com': 
remote: Repository not found.
fatal: Authentication failed for 'https://github.com/username/repo-name.git/'

Sin embargo, en realidad sucedió dentro de Emacs, por lo que el error en Emacs se veía así:

fatal: could not read Username for ’https://github.com’: No such device or address

Entonces, en lugar de un error útil que decía que no había tal repositorio en esa URL, me dio eso, enviándome a una búsqueda inútil hasta que finalmente me di cuenta de que la URL era incorrecta.

Esto es con la versión 2.7.4 de git.

Estoy publicando esto aquí porque me sucedió hace un mes y nuevamente ahora, enviándome a la misma búsqueda inútil nuevamente. > :(


fuente
3

Respuesta corta:

git init
git add README.md
git commit -m "first commit"


git remote add origin https://github.com/{USER_NAME}/{REPOSITORY_NAME}.git
git push --set-upstream origin master

Ignore las primeras tres líneas si no es un repositorio nuevo.

Descripción más larga:

Simplemente tuve el mismo problema, ya que ninguna de las respuestas anteriores me ayudó, he decidido publicar esta solución que funcionó para mí.

Algunas notas:

  • Se generó la clave SSH
  • La clave SSH se agregó a github, todavía tenía este error.
  • Hice un nuevo repositorio en GitHub para este proyecto y seguí los pasos descritos

Como herramienta de línea de comandos usé GitShell (para Windows, uso Terminal.app en Mac).
GitShell es una herramienta oficial de GitHub, se puede descargar desde https://windows.github.com/

Espero que esto ayude a cualquiera que tenga el mismo problema.

Magia creativa
fuente
1

Este es un problema con sus credenciales almacenadas en la caché de credenciales del sistema. Probablemente tenga la variable de configuración 'credential.helper' configurada en wincred o winstore y no la borre. Si inicia el Panel de control y ejecuta el subprograma Credential Manager, busque elementos en la sección de credenciales genéricas etiquetadas "git: https://github.com ". Si los elimina, la próxima vez se volverá a crear, pero la utilidad de ayuda de credenciales le pedirá sus nuevas credenciales.

patthoyts
fuente
¿A qué herramienta se refiere? Actualmente estoy usando Bash para Windows
noobie-php
sí, así que eche un vistazo al subprograma del Panel de control de Credential Manager. Si no hay nada como se mencionó, verifique su configuración - git config --global -l | grep credential. Si hay algún resultado, esa será la utilidad que intentará enviar sus credenciales almacenadas al servidor cuando presione.
patthoyts
1
Amigo, creo que este no es el problema, déjame explicarte, puede que entiendas lo que estoy tratando de decir, git remote add origin https://github.com/username/Hello-World.gitlo usernameque está vinculado a este enlace de repositorio de git está causando problemas, no creo que mi PROPIO nombre de usuario esté causando problemas aquí. Hasta donde yo sé, Credential manger ayuda a administrar las credenciales personales, no las credenciales del repositorio.
noobie-php
1

Reemplace su URL remota de esta manera:

git remote set-url origin https://<username>@github.com/<username>/<repo>.git
GrossesKinoZuerich
fuente
1
Todas las demás publicaciones indican poner la contraseña en la URL remota, que luego se almacenará como texto sin formato en el disco, una seguridad no no. Solo se requiere el nombre de usuario, la tienda de credenciales solicitará su nombre de usuario / contraseña de github y luego lo almacenará de forma segura para usarlo automáticamente.
Bae
1

TL; DR: compruebe si puede leer / escribir /dev/tty. Si no y ha utilizado supara abrir el caparazón, compruebe si lo ha utilizado correctamente.

Estaba enfrentando el mismo problema pero en Linux y encontré el problema. No tengo mis credenciales almacenadas, así que siempre las ingreso cuando se le solicita:

Username for 'https://github.com': foo
Password for 'https://[email protected]': 

La forma en que git maneja las conexiones http (s) /usr/lib/git-core/git-remote-https se puede ver aquí:

stat("/usr/lib/git-core/git-remote-https", {st_mode=S_IFREG|0755, st_size=1366784, ...}) = 0
pipe([9, 10])                           = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f65398bb350) = 18177
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
close(10)                               = 0
read(9, "", 8)                          = 0
close(9)                                = 0
close(5)                                = 0
close(8)                                = 0
dup(7)                                  = 5
fcntl(5, F_GETFL)                       = 0 (flags O_RDONLY)
write(6, "capabilities\n", 13)          = 13
fstat(5, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
read(5, "fetch\noption\npush\ncheck-connecti"..., 4096) = 38
write(6, "option progress true\n", 21)  = 21
read(5, "ok\n", 4096)                   = 3
write(6, "option verbosity 1\n", 19)    = 19
read(5, "ok\n", 4096)                   = 3
stat(".git/packed-refs", {st_mode=S_IFREG|0664, st_size=675, ...}) = 0
lstat(".git/objects/10/52401742a2e9a3e8bf068b115c3818180bf19e", {st_mode=S_IFREG|0444, st_size=179, ...}) = 0
lstat(".git/objects/4e/35fa16cf8f2676600f56e9ba78cf730adc706e", {st_mode=S_IFREG|0444, st_size=178, ...}) = 0
dup(7)                                  = 8
fcntl(8, F_GETFL)                       = 0 (flags O_RDONLY)
close(8)                                = 0
write(6, "list for-push\n", 14)         = 14
read(5, fatal: could not read Username for 'https://github.com': No such device or address
"", 4096)                       = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=18177, si_uid=1000, si_status=128, si_utime=6, si_stime=2} ---
exit_group(128)                         = ?
+++ exited with 128 +++

Así que intenté llamarlo directamente:

echo "list for-push" | strace /usr/lib/git-core/git-remote-https my

y el resultado:

poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 1 ([{fd=3, revents=POLLIN|POLLRDNORM}])
recvfrom(3, "\27\3\3\1\32", 5, 0, NULL, NULL) = 5
recvfrom(3, "\307|4Q\21\306\334\244o\237-\230\255\336\25\215D\257\227\274\r\330\314U\5\17\217T\274\262M\223"..., 282, 0, NULL, NULL) = 282
openat(AT_FDCWD, "/dev/tty", O_RDONLY)  = -1 ENXIO (No such device or address)
openat(AT_FDCWD, "/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=2995, ...}) = 0
read(4, "# Locale name alias data base.\n#"..., 4096) = 2995
read(4, "", 4096)                       = 0
close(4)                                = 0
openat(AT_FDCWD, "/usr/share/locale/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, "fatal: could not read Username f"..., 83fatal: could not read Username for 'https://github.com': No such device or address
) = 83
exit_group(128)                         = ?
+++ exited with 128 +++

Y aquí vino a mí:

openat(AT_FDCWD, "/dev/tty", O_RDONLY)  = -1 ENXIO (No such device or address)
...
write(2, "fatal: could not read Username f"..., 83fatal: could not read Username for 'https://github.com': No such device or address
) = 83

git-remote-httpsintenta leer las credenciales a través, /dev/ttyasí que probé si funciona:

$ echo ahoj > /dev/tty
bash: /dev/tty: No such device or address

Pero en otra terminal:

# echo ahoj > /dev/tty
ahoj

Sabía que había cambiado a este usuario, suasí que salí del shell para ver cómo y descubrí que usé el comando, su danman -así que lo probé nuevamente:

~# su danman -
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
/root$ echo ahoj > /dev/tty
bash: /dev/tty: No such device or address

Probablemente ignoré el mensaje y seguí trabajando, pero esta fue la razón. Cuando cambié usando el correcto, su - danmantodo funcionó bien:

~# su - danman
danman@speedy:~$ echo ahoj > /dev/tty
ahoj

Después de esto, git comenzó a funcionar correctamente

danman
fuente
1

Para aquellos que reciben este error en una canalización de Jenkins, se puede solucionar mediante un complemento de agente SSH . Luego envuelve tus comandos git en algo como esto:

sshagent(['my-ssh-key']) {
    git remote set-url origin [email protected]:username/reponame.git
    sh 'git push origin branch_name'
}
Nagev
fuente
0

Al probar la solución CreativeMagic, se confirma el problema de credenciales:

prompt >>> Nombre de usuario para ' https://github.com '

Entonces, cambié mi URL de origen con

git remote set-url --add origin http://github.com/user/repo

y

git push --set-upstream origin master
tuxun
fuente
0

Intente usar un shell normal de Windows como CMD.

Vajiheh habibi
fuente
0

Antes, cuando no me concedieron permiso para acceder al repositorio, también agregué SSH pubkey a gitlab. En el momento en que pude acceder al repositorio y ejecutar go mod vendor, ocurre el mismo problema que el tuyo. (tal vez por el caché)

go mod vendor

go: errors parsing go.mod:
/Users/macos/Documents/sample/go.mod:22: git ls-remote -q https://git.aaa.team/core/some_repo.git in /Users/macos/go/pkg/mod/cache/vcs/a94d20a18fd56245f5d0f9f1601688930cad7046e55dd453b82e959b12d78369: exit status 128:
    fatal: could not read Username for 'https://git.aaa.team': terminal prompts disabled

Después de intentarlo durante un tiempo, decido eliminar la clave SSH y los mensajes de la terminal completando el nombre de usuario y la contraseña. ¡Entonces todo está bien!

Long Tran
fuente
0

Lo que funcionó para mí es cambiar el acceso al repositorio de Git de privado a público.

Kapil Garg
fuente