fatal: impossible de lire le nom d'utilisateur pour 'https://github.com': aucun fichier ou répertoire de ce type

95

J'ai le problème suivant lorsque j'essaie d'extraire du code à l'aide de git Bash sous Windows:

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

J'ai déjà essayé de mettre en œuvre la solution acceptée fournie ici:

... mais le problème persiste. Après avoir ajouté / supprimé l'origine, j'obtiens toujours la même erreur.

noobie-php
la source
Avez-vous configuré le nom d'utilisateur? git config --global user.name "Your Name Here"
Raul Andres
J'ai déjà essayé mais cela ne fait pas référence à mon nom d'utilisateur git, je pense que cela pose un problème pour le nom d'utilisateur du référentiel git que j'appelle ici.
noobie-php
Je me demande si le passage à SSH comme solution de contournement le résout? albertech.blogspot.com/2016/11/…
pot

Réponses:

68

Suivez les étapes pour configurer les clés SSH ici: https://help.github.com/articles/generating-ssh-keys

OU

git remote add origin https://{username}:{password}@github.com/{username}/project.git
Tony Zampogna
la source
3
La 2ème option n'a pas fonctionné car j'avais déjà ajouté 'origin github'. J'ai supprimé l'origine [git remote remove origin], puis j'ai écrit ce qu'il y a dans la réponse avec mon nom d'utilisateur et mon mot de passe et cela a bien fonctionné.
P_Rein le
9
au lieu de supprimer et de rajouter l'origine, vous pouvez également simplement modifier l'URL en utilisantgit remote set-url origin https://{username}:{password}@github.com/...
Chris
10
La solution @Chris fonctionne mais elle stocke le mot de passe du compte github de l'utilisateur et le laisse lire en tapant simplementgit remote -v
Jefferson Silva
L'option de Chris a fonctionné pour moi! J'ai suivi avec Jefferson Silva et cela a bien fonctionné. error: cannot spawn sh: No such file or directory
J'ai
14

J'ai rencontré exactement le même problème. Ce problème s'est produit lorsque j'ai cloné à l'aide de l'URL HTTPS, puis que j'ai essayé de pousser les modifications à l'aide de Git Bash sous Windows en utilisant:

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

Cependant, lorsque j'ai utilisé l'URL SSH pour cloner, ce problème ne s'est pas produit:

git clone [email protected]:{username}/{repo}.git
Fayaz
la source
3
D'accord, mais pourquoi cela se produit-il?
Gili
En raison d'un bug dans msysgit: github.com/msysgit/msysgit/issues/153
Fayaz
Je reçois ce message dans un conteneur Docker fonctionnant sur gitlab. L'image de base est python:3.7-slim. Ce n'est donc pas lié à Windows.
Martin Thoma
Dans mon cas, c'était un dépôt d'organisation utilisant ssh: //git.gartner.com
Ankush
11

Notez que si vous obtenez cette erreur à la place:

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

Ensuite, vous devez mettre à jour votre Git vers la version 2.16ou une version ultérieure.

Rosdi Kasim
la source
10

Pour moi, rien n'a fonctionné à partir des suggestions ci-dessus, j'utilise git pull du script shell jenkins et apparemment il prend un nom d'utilisateur incorrect. J'ai passé des siècles avant de trouver un moyen de le réparer sans passer à SSH.

Dans votre dossier de l'utilisateur, créez un fichier .gitconfig (si vous ne l'avez pas déjà) et mettez vos informations d'identification au format suivant:, https://user:[email protected]plus d' informations . Après votre lien de fichier .gitconfig vers ces informations d'identification, dans mon cas, c'était:

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

Maintenant, git utilisera toujours ces informations d'identification quoi qu'il arrive. J'espère que cela aidera quelqu'un, comme cela m'a aidé.

Katia
la source
pour moi , il ne fonctionnait que quand je mets [credential] helper = store --file /..../.git-credentialsdans .git/configdans mon répertoire de travail
Kirill Oficerov
5

J'ai trouvé ma réponse ici :

modifier ~/.gitconfiget ajouter ce qui suit:

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

Bien que cela résout un problème différent, le code d'erreur est le même ...

Louis Parkin
la source
4

Si vous souhaitez continuer, utilisez https à la place de ssh et évitez de saisir votre nom d'utilisateur et votre mot de passe pour des raisons de sécurité.

Vous pouvez également essayer le jeton Github OAuth , puis vous pouvez faire git config remote.origin.url 'https://{token}@github.com/{username}/{project}.git' ou git remote add origin 'https://{token}@github.com/{username}/{project}.git'

Cela fonctionne pour moi!

spiralmoon
la source
4

Cette erreur peut également se produire lors de la tentative de clonage d'une URL HTTP non valide. Par exemple, voici l'erreur que j'ai obtenue en essayant de cloner une URL GitHub avec quelques caractères:

$ 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/'

Cela s'est en fait produit à l'intérieur d'Emacs, donc l'erreur dans Emacs ressemblait à ceci:

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

Donc, au lieu d'une erreur utile disant qu'il n'y avait pas de tel dépôt à cette URL, cela m'a donné cela, m'envoyant dans une poursuite sauvage jusqu'à ce que je réalise enfin que l'URL était incorrecte.

C'est avec la version 2.7.4 de git.

Je poste ceci ici parce que cela m'est arrivé il y a un mois et encore une fois tout à l'heure, m'envoyant à nouveau sur la même chasse à l'oie sauvage. > :(

blujay
la source
3

Réponse courte:

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

Ignorez les trois premières lignes s'il ne s'agit pas d'un nouveau référentiel.

Description plus longue:

J'ai juste eu le même problème, car aucune des réponses ci-dessus ne m'a aidé, j'ai décidé de publier cette solution qui a fonctionné pour moi.

Quelques notes:

  • La clé SSH a été générée
  • La clé SSH a été ajoutée à github, il y avait toujours cette erreur.
  • J'ai créé un nouveau référentiel sur GitHub pour ce projet et suivi les étapes décrites

En tant qu'outil de ligne de commande, j'ai utilisé GitShell (pour Windows, j'utilise Terminal.app sur Mac).
GitShell est l'outil officiel de GitHub, peut être téléchargé à partir de https://windows.github.com/

J'espère que cela aidera quiconque a le même problème.

Magie créative
la source
1

Il s'agit d'un problème avec vos informations d'identification stockées dans le cache des informations d'identification système. Vous avez probablement la variable de configuration 'credential.helper' définie sur wincred ou winstore et elle ne parvient pas à l'effacer. Si vous démarrez le Panneau de configuration et lancez l'applet Credential Manager, recherchez les éléments dans la section des informations d'identification génériques intitulée "git: https://github.com ". Si vous les supprimez, le sera recréé la prochaine fois, mais l'utilitaire d'aide aux informations d'identification vous demandera vos nouvelles informations d'identification.

patthoyts
la source
de quel outil parlez-vous
J'utilise
oui - alors jetez un œil à l'applet du panneau de configuration Credential Manager. S'il n'y a rien comme mentionné, vérifiez votre configuration - git config --global -l | grep credential. S'il y a quelque chose en sortie, ce sera l'utilitaire qui essaiera de fournir vos informations d'identification stockées au serveur lorsque vous poussez.
patthoyts
1
Mate, je pense que ce n'est pas le problème, laissez-moi vous expliquer, peut-être que vous comprenez ce que j'essaie de dire, git remote add origin https://github.com/username/Hello-World.gitle usernamelien qui est lié à ce lien git repo pose des problèmes , je ne pense pas que mon PROPRE nom d'utilisateur pose des problèmes ici. Pour autant que je sache, Credential Manager aide à gérer les informations d'identification personnelles, et non les informations d'identification du référentiel.
noobie-php
1

Remplacez votre URL distante comme ceci:

git remote set-url origin https://<username>@github.com/<username>/<repo>.git
GrossesKinoZuerich
la source
Tous les autres messages indiquent mettre le mot de passe dans l'URL distante, qui sera ensuite stockée en texte brut sur le disque - une sécurité non non. Seul le nom d'utilisateur est requis, le magasin d'informations d'identification demandera votre nom d'utilisateur / mot de passe github, puis le stockera en toute sécurité pour être utilisé automatiquement.
Bae
1

TL; DR: vérifiez si vous pouvez lire / écrire dans /dev/tty. Si non et que vous avez utilisé supour ouvrir le shell, vérifiez si vous l'avez utilisé correctement.

J'étais confronté au même problème mais sous Linux et j'ai trouvé le problème. Je n'ai pas mes identifiants stockés, donc je les saisis toujours à l'invite:

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

La façon dont git gère les connexions http (s) utilise /usr/lib/git-core/git-remote-https vous pouvez voir strace ici:

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 +++

J'ai donc essayé de l'appeler directement:

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

et le résultat:

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 +++

Et ici, il m'est venu:

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-httpsessaie de lire les informations d'identification via /dev/ttydonc j'ai testé si cela fonctionne:

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

Mais dans un autre terminal:

# echo ahoj > /dev/tty
ahoj

Je savais que je suis passé à cet utilisateur en utilisant sudonc j'ai quitté le shell pour voir comment et j'ai découvert que j'avais utilisé la commande, su danman -alors je l'ai testé à nouveau:

~# 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

J'ai probablement ignoré le message et j'ai continué à travailler, mais c'était la raison. Quand j'ai changé en utilisant le correct, su - danmantout fonctionnait bien:

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

Après cela, git a commencé à fonctionner correctement

danman
la source
1

Pour ceux qui obtiennent cette erreur dans un pipeline Jenkins, elle peut être corrigée à l'aide d'un plugin SSH Agent . Ensuite, enveloppez vos commandes git dans quelque chose comme ceci:

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

Essayez d'utiliser un shell Windows normal tel que CMD.

Vajiheh habibi
la source
0

Auparavant, quand je n'avais pas l'autorisation d'accéder au dépôt, j'avais également ajouté la clé de pub SSH à gitlab. Au moment où je pourrais accéder au repo et exécuter le fournisseur de mod go, le même problème que le vôtre se produit. (peut-être à cause du cache)

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

Après un certain temps, je décide de supprimer la clé SSH et les invites du terminal remplissant le nom d'utilisateur et le mot de passe. Tout va bien alors!

Long Tran
la source
0

J'ai eu le même problème dans IntelliJ IDE et pour moi, rien n'a fonctionné à partir des suggestions ci-dessus. Ce qui a fonctionné pour moi, c'est de changer l'accès au référentiel Git de privé à public.

Kapil Garg
la source
-1

en essayant la solution CreativeMagic, le problème d’identification est confirmé:

prompt >>> Nom d'utilisateur pour ' https://github.com '

Alors, j'ai changé mon URL d'origine avec

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

et

git push --set-upstream origin master
smoking
la source
1
c'est pourquoi je n'aide jamais les gens
tuxun