fatal: Benutzername für 'https://github.com' konnte nicht gelesen werden: Keine solche Datei oder kein solches Verzeichnis

94

Ich habe das folgende Problem, wenn ich versuche, Code mit git Bash unter Windows abzurufen:

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

Ich habe bereits versucht, die hier bereitgestellte akzeptierte Lösung zu implementieren:

... aber das Problem bleibt bestehen. Nach dem Hinzufügen / Entfernen des Ursprungs erhalte ich immer noch den gleichen Fehler.

noobie-php
quelle
Haben Sie den Benutzernamen konfiguriert? git config --global user.name "Your Name Here"
Raul Andres
Ich habe das bereits versucht, aber es bezieht sich nicht auf meinen Git-Benutzernamen. Ich denke, es gibt ein Problem für den Benutzernamen des Git-Repositorys, das ich hier aufrufe.
Noobie-Php
Ich frage mich, ob ein Wechsel zu SSH als Problemumgehung das Problem behebt. albertech.blogspot.com/2016/11/…
jar

Antworten:

66

Befolgen Sie die Schritte zum Einrichten von SSH-Schlüsseln hier: https://help.github.com/articles/generating-ssh-keys

ODER

git remote add origin https://{username}:{password}@github.com/{username}/project.git
Tony Zampogna
quelle
3
Die zweite Option funktionierte nicht, da ich bereits 'origin github' hinzugefügt hatte. Ich habe den Ursprung entfernt [git remote remove origin] und dann mit meinem Benutzernamen und Passwort geschrieben, was in der Antwort steht, und es hat gut funktioniert.
P_Rein
9
Anstatt den Ursprung zu löschen und erneut hinzuzufügen, können Sie die URL auch einfach mitgit remote set-url origin https://{username}:{password}@github.com/...
Chris
10
@ Chris Lösung funktioniert, aber es speichert das Github-Konto-Passwort des Benutzers und lässt es durch einfaches Eingeben lesengit remote -v
Jefferson Silva
Chris 'Option hat bei mir funktioniert! Ich habe es mit Jefferson Silva verfolgt und es hat gut funktioniert. Haben Sie noch eine error: cannot spawn sh: No such file or directoryNachricht ...
TheSciGuy
14

Ich hatte genau das gleiche Problem. Dieses Problem trat auf, als ich mit der HTTPS-URL geklont und dann versucht habe, die Änderungen mit Git Bash unter Windows zu übertragen, indem ich:

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

Als ich jedoch die SSH-URL zum Klonen verwendete, trat dieses Problem nicht auf:

git clone [email protected]:{username}/{repo}.git
Fayaz
quelle
3
Okay, aber warum passiert das?
Gili
Wegen eines Fehlers in msysgit: github.com/msysgit/msysgit/issues/153
Fayaz
Ich erhalte diese Nachricht in einem Docker-Container, der auf gitlab ausgeführt wird. Das Basisbild ist python:3.7-slim. Es ist also nicht Windows-bezogen.
Martin Thoma
In meinem Fall war es ein Organisations-Repo mit ssh: //git.gartner.com
Ankush
11

Beachten Sie Folgendes, wenn Sie stattdessen diesen Fehler erhalten:

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

Dann müssen Sie Ihr Git auf die Version 2.16oder höher aktualisieren .

Rosdi Kasim
quelle
10

Für mich hat nichts von dem oben vorgeschlagenen funktioniert, ich benutze git pullvon Jenkins Shell-Skript und anscheinend nimmt es falschen Benutzernamen. Ich habe Ewigkeiten verbracht, bevor ich einen Weg gefunden habe, das Problem zu beheben, ohne auf SSH umzusteigen.

Erstellen Sie in Ihrem Benutzerordner die .gitconfig-Datei (falls Sie diese noch nicht haben) und geben Sie Ihre Anmeldeinformationen in das folgende Format ein : https://user:[email protected], Weitere Informationen . Nach dem Link Ihrer .gitconfig-Datei zu diesen Anmeldeinformationen war es in meinem Fall:

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

Jetzt wird git diese Anmeldeinformationen immer verwenden, egal was passiert. Ich hoffe es wird jemandem helfen, so wie es mir geholfen hat.

Katia
quelle
für mich ist es funktioniert nur , wenn ich setzte [credential] helper = store --file /..../.git-credentialsin .git/configin meinem Arbeitsverzeichnis
Kirill Oficerov
5

Ich habe meine Antwort hier gefunden :

Bearbeiten ~/.gitconfigund fügen Sie Folgendes hinzu:

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

Obwohl es ein anderes Problem löst, ist der Fehlercode der gleiche ...

Louis Parkin
quelle
4

Wenn Sie weiterhin https anstelle von ssh verwenden möchten, geben Sie aus Sicherheitsgründen nicht Ihren Benutzernamen und Ihr Kennwort ein.

Sie können auch versuchen, Github OAuth Token , dann können Sie tun git config remote.origin.url 'https://{token}@github.com/{username}/{project}.git' oder git remote add origin 'https://{token}@github.com/{username}/{project}.git'

Das funktioniert bei mir!

Spiralmond
quelle
4

Dieser Fehler kann auch auftreten, wenn versucht wird, eine ungültige HTTP-URL zu klonen. Dies ist beispielsweise der Fehler, den ich beim Versuch habe, eine GitHub-URL zu klonen, die einige Zeichen entfernt war:

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

Es passierte jedoch tatsächlich in Emacs, sodass der Fehler in Emacs folgendermaßen aussah:

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

Anstelle eines hilfreichen Fehlers, der besagte, dass es unter dieser URL kein solches Repo gab, gab es mir das und schickte mich auf eine wilde Gänsejagd, bis ich schließlich feststellte, dass die URL falsch war.

Dies ist mit Git Version 2.7.4.

Ich poste das hier, weil es mir vor einem Monat und gerade jetzt passiert ist und mich wieder auf die gleiche wilde Gänsejagd geschickt hat. > :(

Blujay
quelle
3

Kurze Antwort:

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

Ignorieren Sie die ersten drei Zeilen, wenn es sich nicht um ein neues Repository handelt.

Längere Beschreibung:

Hatte gerade das gleiche Problem, da mir keine der oben genannten Antworten geholfen hat, habe ich beschlossen, diese Lösung zu veröffentlichen, die für mich funktioniert hat.

Einige Anmerkungen:

  • Der SSH-Schlüssel wurde generiert
  • SSH-Schlüssel wurde zu Github hinzugefügt, hatte immer noch diesen Fehler.
  • Ich habe für dieses Projekt ein neues Repository auf GitHub erstellt und die beschriebenen Schritte ausgeführt

Als Befehlszeilentool habe ich GitShell verwendet (für Windows verwende ich Terminal.app auf Mac).
GitShell ist das offizielle GitHub-Tool und kann von https://windows.github.com/ heruntergeladen werden.

Hoffe, das hilft jedem, der das gleiche Problem hat.

Kreative Magie
quelle
1

Dies ist ein Problem mit Ihren gespeicherten Anmeldeinformationen im Cache für Systemanmeldeinformationen. Sie haben wahrscheinlich die Konfigurationsvariable 'credential.helper' auf wincred oder winstore gesetzt und können sie nicht löschen. Wenn Sie die Systemsteuerung starten und das Applet "Credential Manager" starten, suchen Sie im Abschnitt "Allgemeine Anmeldeinformationen" mit der Bezeichnung "git: https://github.com " nach Elementen . Wenn Sie diese löschen, wird das nächste Mal neu erstellt, aber das Hilfsprogramm für Anmeldeinformationen fragt Sie nach Ihren neuen Anmeldeinformationen.

Patthoyts
quelle
Auf welches Tool beziehen Sie sich
?
Ja, sehen Sie sich das Applet "Credential Manager-Systemsteuerung" an. Wenn dort wie erwähnt nichts vorhanden ist, überprüfen Sie Ihre Konfiguration - git config --global -l | grep credential. Wenn etwas ausgegeben wird, ist dies das Dienstprogramm, das versucht, Ihre gespeicherten Anmeldeinformationen beim Push an den Server weiterzuleiten.
Patthoyts
1
Kamerad Ich denke , das ist nicht das Problem , lassen Sie mich erklären, können Sie bekommen , was ich bin versucht zu sagen, git remote add origin https://github.com/username/Hello-World.gitdas usernamedie gebunden ist an dieser git Repo - Link wird Ärger machen, ich glaube nicht , meine eigenen Benutzernamen hier Probleme macht. Soweit ich weiß, hilft Credential Manager bei der Verwaltung persönlicher Anmeldeinformationen, nicht der Anmeldeinformationen des Repositorys.
Noobie-Php
1

Ersetzen Sie Ihre Remote-URL folgendermaßen:

git remote set-url origin https://<username>@github.com/<username>/<repo>.git
GrossesKinoZuerich
quelle
In allen anderen Beiträgen wird angegeben, dass das Kennwort in die Remote-URL eingegeben wird, die dann im Klartext auf der Festplatte gespeichert wird - eine Sicherheitsnummer. Es wird nur der Benutzername benötigt. Der Anmeldeinformationsspeicher fordert Ihren Github-Benutzernamen / Ihr Kennwort an und speichert ihn dann sicher, um automatisch verwendet zu werden.
Bae
1

TL; DR: Überprüfen Sie, ob Sie lesen / schreiben können /dev/tty. Wenn nein, und Sie sudie Shell zum Öffnen verwendet haben , überprüfen Sie, ob Sie sie richtig verwendet haben.

Ich hatte das gleiche Problem, aber unter Linux, und ich habe das Problem gefunden. Ich habe meine Anmeldeinformationen nicht gespeichert, daher gebe ich sie immer bei der Eingabeaufforderung ein:

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

Die Art und Weise, wie Git mit http (s) -Verbindungen /usr/lib/git-core/git-remote-https umgeht, können Sie hier sehen:

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

Also habe ich versucht, es direkt zu nennen:

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

und das Ergebnis:

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

Und hier kam es zu mir:

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-httpsversucht, Anmeldeinformationen über zu lesen, /dev/ttyalso habe ich getestet, ob es funktioniert:

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

Aber in einem anderen Terminal:

# echo ahoj > /dev/tty
ahoj

Ich wusste, dass ich mit zu diesem Benutzer gewechselt bin, sualso habe ich die Shell verlassen, um zu sehen, wie und fand heraus, dass ich den Befehl verwendet habe, su danman -also habe ich ihn erneut getestet:

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

Ich habe die Nachricht wahrscheinlich ignoriert und weitergearbeitet, aber das war der Grund. Als ich mit dem richtigen gewechselt habe, hat su - danmanalles gut funktioniert:

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

Danach begann git richtig zu arbeiten

Danman
quelle
1

Für diejenigen, die diesen Fehler in einer Jenkins-Pipeline erhalten, kann er mithilfe eines SSH-Agent- Plugins behoben werden . Wickeln Sie dann Ihre Git-Befehle in etwa Folgendes ein:

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

Versuchen Sie es mit einer normalen Windows-Shell wie CMD.

Vajiheh Habibi
quelle
0

Früher, als mir keine Erlaubnis zum Zugriff auf das Repo erteilt wurde, hatte ich gitlab auch den SSH-Pubkey hinzugefügt. An dem Punkt, an dem ich auf das Repo zugreifen und den Go-Mod-Anbieter ausführen konnte, war das gleiche Problem wie bei Ihnen. (vielleicht wegen 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

Nach einer Weile entscheide ich mich, den SSH-Schlüssel und die Eingabeaufforderungen des Terminals zu entfernen und Benutzername und Passwort einzugeben. Dann ist alles in Ordnung!

Long Tran
quelle
0

Ich hatte das gleiche Problem in IntelliJ IDE und für mich funktionierte nichts von den oben vorgeschlagenen. Für mich hat es funktioniert, den Zugriff des Git-Repositorys von privat auf öffentlich zu ändern.

Kapil Garg
quelle
-1

Wenn Sie die CreativeMagic-Lösung ausprobieren, wird das Problem mit den Anmeldeinformationen bestätigt:

Eingabeaufforderung >>> Benutzername für ' https://github.com '

Also habe ich meine Ursprungs-URL mit geändert

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

und

git push --set-upstream origin master
Smoking
quelle
1
deshalb helfe ich nie menschen
tuxun