Ich habe die private Repo-Beispielseite / myprivaterepo mithilfe 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, wird zum Repo hinzugefügt und gepusht.
$ 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 eine Fehlermeldung:
# 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 ihn dazu bringen, sein Schicksal zu akzeptieren? Vielen Dank.
go
Fehler, sonderngit
gibt "Terminal-Eingabeaufforderungen deaktiviert" zurück. Können Siegit clone https://github.com/examplesite/myprivaterepo
auf Ihrem Laptop laufen ?https://github.com/
ob der Importpfad nicht existiert. Der Git-Prozess sollte in der Lage sein, nach dem Benutzernamen / Passwort zu fragen, daher muss in der Laptop-Konfiguration etwas anderes vorhanden sein - eine andere Shell, eine andere .gitconfig, eine env-Variable usw.Antworten:
go get deaktiviert standardmäßig die "Terminal-Eingabeaufforderung". Dies kann durch Festlegen einer Umgebungsvariablen von git geändert werden:
quelle
Ich fand das sehr hilfreich und es löste mein Problem. Dieser Befehl ermöglicht es Ihrem 2FA, seine Aufgabe zu erledigen (und erspart Ihnen die Eingabe Ihres Benutzernamens und Passworts):
Quelle: http://albertech.blogspot.com/2016/11/fix-git-error-could-not-read-username.html
Wenn Sie 2FA nicht verwenden, können Sie weiterhin SSH verwenden, und dies funktioniert.
Bearbeiten: fügte die
--add
Flagge hinzu, wie von slatunje vorgeschlagen .quelle
git config --global --add url."[email protected]:".insteadOf "https://github.com/"
[email protected]: Permission denied (publickey). fatal: Could not read from remote repository.
.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 osxkeychain-Helfer für Anmeldeinformationen verwenden.2. Für mich habe ich 2FA aktiviert und konnte daher mein Passwort nicht zur Authentifizierung verwenden. Stattdessen musste ich ein persönliches Zugriffstoken generieren, um es anstelle des Passworts zu verwenden.
git clone https://github.com/user/private_repo
und verwendet Ihren github.com-Benutzernamen als Benutzernamen und das generierte persönliche Zugriffstoken als Passwort.Das gerade geklonte Repo wurde entfernt und erneut getestet, um sicherzustellen, dass Creds zwischengespeichert wurden -
git clone https://github.com/user/private_repo
und diesmal wurde nicht nach Creds gefragt.quelle
git clone
eines meiner eigenen vorhandenen Repos erstellt (es ist tatsächlich öffentlich), wurde zu meinem aufgefordertusername
, meinen GitHub-Benutzernamen eingegeben und dann das eingegeben Token generiert fürpassword
- das geklonte Repo gelöscht, dann dengo get
Befehl erneut ausgeführt und alles war gut - danke! (OSX auch hier)Wenn Sie nur sehr
go get
schnell arbeiten und Ihre Arbeit fortsetzen möchten ...Einfach exportieren
GIT_TERMINAL_PROMPT=1
Sie werden nun aufgefordert, einen Benutzer / Pass für den Rest Ihrer Shell-Sitzung einzugeben. Fügen Sie dies wie oben beschrieben in Ihr
.profile
oder Setup ein,git
um eine dauerhaftere Lösung zu erhalten.quelle
Es beschwert sich, weil es
ssh
anstelle von verwendet werden muss,https
aber Ihr Git ist immer noch mit https konfiguriert. Grundsätzlich müssen Sie, wie bereits erwähnt, entweder Eingabeaufforderungen aktivieren oder git für die Verwendungssh
anstelle von konfigurierenhttps
. Eine einfache Möglichkeit, dies zu tun, indem Sie Folgendes ausführen:oder wenn Sie bereits
ssh
mitgit
in Ihrem Computer verwenden, können Sie~/.gitconfig
die folgende Zeile ganz unten sicher bearbeiten und hinzufügenHinweis: Dies umfasst alle SVC- und Quellversionskontrollen, die davon abhängen, was Sie genau verwenden (Github, Gitlab, Bitbucket).
Wenn Sie Kennwort-Pompts deaktiviert lassen möchten, müssen Sie das Kennwort zwischenspeichern. Weitere Informationen zum Zwischenspeichern Ihres Github-Passworts unter Mac, Windows oder Linux finden Sie auf dieser Seite .
Weitere Informationen zum Hinzufügen von ssh zu Ihrem Github-Konto finden Sie auf dieser Seite .
Noch wichtiger ist, dass Sie, wenn dies ein privates Repository für ein Unternehmen oder für sich selbst ist, möglicherweise die Verwendung der Proxy- oder Prüfsummen-Datenbank für solche Repos überspringen müssen, um zu vermeiden, dass sie öffentlich zugänglich gemacht werden.
Dazu müssen Sie eine
GOPRIVATE
Umgebungsvariable festlegen , die steuert, welche Module der Befehl go als privat betrachtet (nicht öffentlich verfügbar) und daher NICHT die Proxy- oder Prüfsummen-Datenbank verwenden sollte.Die Variable ist eine durch Kommas getrennte Liste von Mustern (gleiche Syntax von Go's
path.Match
) von Modulpfadpräfixen. Beispielsweise,Oder
Eine letzte Sache, die Sie nicht vergessen sollten zu erwähnen, Sie können immer noch konfigurieren, um sich
go get
zu authentifizieren und abzurufenhttps
. Alles, was Sie tun müssen, ist, die folgende Zeile hinzuzufügen$HOME/.netrc
Ich hoffe, dies hilft der Community und spart anderen Zeit, um die beschriebenen Probleme schnell zu lösen. Bitte hinterlassen Sie einen Kommentar, falls Sie weitere Unterstützung oder Hilfe wünschen.
quelle
GOPRIVATE
(go env -w GOPRIVATE=github.com/mycompany/*
) ist das einzige, was für mich funktioniert hat. Ich könnte vorschlagen, dies unter eine eigene Überschrift oder sogar in eine eigene Antwort zu setzen, um es ein bisschen mehr hervorzuheben.Wenn Sie Ihre gitconfig mit dieser Option konfigurieren, haben Sie später ein Problem beim Klonen anderer Repos von GitHub
Stattdessen empfehle ich Ihnen, diese Option zu verwenden
und vergessen Sie nicht, ein Zugriffstoken aus Ihrem privaten Repository zu generieren. Wenn Sie zur Eingabe Ihres Passworts aufgefordert werden, fügen Sie einfach das Zugriffstoken ein. Glücklicher Klon :)
quelle
Ich hatte das gleiche Problem unter Windows. "Fehler: Fehler beim Ausführen des Eingabeaufforderungsskripts (Exit-Code 1). Schwerwiegend: Benutzername für ' https://github.com ' konnte nicht gelesen werden. Kein Fehler." Beim Versuch, mich über den Anmeldedialog bei Github anzumelden. Als ich den Dialog abbrach, fragte mich Git in der Kommandozeile nach Login und Passwort und es funktionierte einwandfrei.
quelle