it-swarm.com.de

go Ergebnisse in "Terminal-Eingabeaufforderungen deaktiviert" -Fehler für Github Private Repo abrufen

Ich habe die private Repo-Beispielseite/myprivaterepo mit der Github-Benutzeroberfläche in meinem Browser erstellt.

Dann ging ich zu meinem go-Verzeichnis (auf dem Desktop) und klonte es:

$ cd $GOPATH
$ go get github.com/examplesite/myprivaterepo

So weit, ist es gut. Erstellt die Datei scheduler.go, fügt sie zu repo hinzu und schiebt sie.

$ vim scheduler.go
$ git add scheduler.go
$ git commit
$ git Push

Alles ist in Ordnung. Aber als ich zu einem sauberen Laptop ging und versuchte, das Repo zu klonen, bekam ich einen Fehler:

# Now on laptop, which doesn't yet know about the repo
$ cd $GOPATH
$ go get github.com/examplesite/myprivaterepo
# At this point it should ask for my user ID and password ,right? But it doesn't.
# Instead, this error occurs:
cd .; git clone https://github.com/examplesite/myprivaterepo /Users/tom/go/src/github.com/examplesite/myprivaterepo
Cloning into '/Users/tom/go/src/github.com/examplesite/myprivaterepo'...
fatal: could not read Username for 'https://github.com': terminal prompts disabled
package github.com/examplesite/myprivaterepo: exit status 128

Warum hasst mein Laptop mein eigenes Repo und wie kann ich es dazu bringen, sein Schicksal zu akzeptieren? Vielen Dank.

136
tomcam

go get deaktiviert standardmäßig die "Terminal-Eingabeaufforderung". Dies kann durch Setzen einer Umgebungsvariablen von git geändert werden:

env GIT_TERMINAL_Prompt=1 go get github.com/examplesite/myprivaterepo
130
Shafreeck Sea

Ich fand das sehr hilfreich und es löste mein Problem. Dieser Befehl ermöglicht es Ihrem 2FA, seine Sache zu erledigen (und erspart Ihnen die Mühe, Ihren Benutzernamen und Ihr Passwort einzugeben):

git config --global --add url."[email protected]:".insteadOf "https://github.com/"

Quelle: http://albertech.blogspot.com/2016/11/fix-git-error-could-not-read-username.html

Wenn Sie 2FA nicht verwenden, können Sie SSH weiterhin verwenden, und das wird funktionieren.

Bearbeiten: Das Flag --add Wurde hinzugefügt, wie von slatunje vorgeschlagen.

206
Wylliam Judd

1 -- go get verweigert die Authentifizierung in der Befehlszeile. Sie müssen also die Anmeldeinformationen in git zwischenspeichern. Da ich osx verwende, kann ich den Anmeldeinformationshelfer osxkeychain verwenden.

2. Für mich habe ich 2FA aktiviert und konnte somit mein Passwort nicht zur Authentifizierung verwenden. Stattdessen musste ich ein persönliches Zugriffstoken generieren, um es anstelle des Passworts zu verwenden.

  1. richten Sie osxkeychain credential helper ein https://help.github.com/articles/caching-your-github-password-in-git/
  2. Wenn Sie TFA anstelle Ihres Kennworts verwenden, generieren Sie ein persönliches Zugriffstoken mit Repo-Gültigkeitsbereich https://github.com/settings/tokens
  3. git klont ein privates Repo, damit es das Passwort zwischenspeichert git clone https://github.com/user/private_repo und haben Ihren github.com-Benutzernamen für den Benutzernamen und das generierte persönliche Zugriffstoken für das Kennwort verwendet.
  4. Das gerade geklonte Repo wurde entfernt und erneut getestet, um sicherzustellen, dass die Creds zwischengespeichert wurden - git clone https://github.com/user/private_repo und diesmal wurde nicht nach creds gefragt.

    1. go get funktioniert mit allen Repos, auf die das persönliche Zugriffstoken zugreifen kann. Möglicherweise müssen Sie die Schritte mit anderen Konten/Tokens wiederholen, da die Berechtigungen variieren.
36
Mike Graf

Wenn du nur go get um wirklich schnell zu arbeiten und mit deiner Arbeit weiterzumachen ...

Einfach exportieren GIT_TERMINAL_Prompt=1

$ export GIT_TERMINAL_Prompt=1
$ go get [whatever]

Sie werden nun zur Eingabe eines Benutzers/Passes für den Rest Ihrer Shell-Sitzung aufgefordert. Gib das in dein .profile oder setup git wie oben für eine dauerhaftere Lösung.

12
EdH

Wenn Sie Ihre gitconfig mit dieser Option konfigurieren, werden Sie später Probleme haben, andere Repos von GitHub zu klonen

git config --global --add url. "[email protected]". Instead, "https://github.com/"

Ich empfehle stattdessen, dass Sie diese Option verwenden

echo "export GIT_TERMINAL_Prompt=1" >> ~/.bashrc || ~/.zshrc

und vergessen Sie nicht, ein Zugriffstoken aus Ihrem privaten Repository zu generieren. Wenn Sie aufgefordert werden, Ihr Kennwort einzugeben, fügen Sie einfach das Zugriffstoken ein. Glücklicher Klon :)

0
cooljl86

Ich hatte das gleiche Problem unter Windows "Fehler: Fehler beim Ausführen des Eingabeaufforderungsskripts (Beendigungscode 1). Schwerwiegend: Benutzername für ' https://github.com ' konnte nicht gelesen werden: Kein Fehler" beim Anmelden durch den Login-Dialog zu github. Als ich den Dialog abbrach, fragte mich git nach Login und Passwort in der Kommandozeile und es funktionierte einwandfrei.

0
Nick Proto