Utworzyłem prywatne przykłady repozytorium / myprivaterepo przy użyciu interfejsu użytkownika Github z mojej przeglądarki.
Potem poszedłem do mojego katalogu go (na pulpicie) i sklonowałem go:
$ cd $GOPATH
$ go get github.com/examplesite/myprivaterepo
Na razie w porządku. Utworzono plik scheduler.go, dodano do repozytorium i przekazano.
$ vim scheduler.go
$ git add scheduler.go
$ git commit
$ git push
Wszystko w porządku. Ale kiedy poszedłem do czystego laptopa i próbowałem sklonować repozytorium, dostałem błąd:
# 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
Dlaczego mój laptop nienawidzi mojego własnego repozytorium i jak mogę go zaakceptować? Dzięki.
go
błąd,git
zwraca „monity terminala wyłączone”. Czy umiesz działaćgit clone https://github.com/examplesite/myprivaterepo
na swoim laptopie?https://github.com/
jeśli ścieżka importu nie istnieje. Proces git powinien móc pytać o nazwę użytkownika / hasło, więc musi być coś innego w konfiguracji laptopa - inna powłoka, inna .gitconfig, zmienna env itp.Odpowiedzi:
go get domyślnie wyłącza „monit terminala”. Można to zmienić, ustawiając zmienną środowiskową git:
źródło
Uważam to za niezwykle pomocne i rozwiązało mój problem. To polecenie pozwoli Twojemu 2FA zrobić to samo (i pozwoli ci uniknąć kłopotów z wprowadzeniem nazwy użytkownika i hasła):
Źródło: http://albertech.blogspot.com/2016/11/fix-git-error-could-not-read-username.html
Jeśli nie używasz 2FA, możesz nadal korzystać z SSH i to zadziała.
Edycja: dodano
--add
flagę zgodnie z sugestią slatunje .źródło
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
odmówi uwierzytelnienia w wierszu polecenia. Więc musisz buforować poświadczenia w git. Ponieważ używam osx, mogę używać pomocnika poświadczeń osxkeychain.2. Dla mnie mam 2FA włączone i dlatego nie mogę użyć mojego hasła do autoryzacji. Zamiast tego musiałem wygenerować osobisty token dostępu do użycia zamiast hasła.
git clone https://github.com/user/private_repo
i użyło twojej nazwy użytkownika github.com dla nazwy użytkownika i wygenerowanego osobistego tokena dostępu dla hasła.Usunięto właśnie sklonowane repozytorium i ponownie przetestuj, aby upewnić się, że kredyty zostały zapisane w pamięci podręcznej -
git clone https://github.com/user/private_repo
i tym razem nie poprosono o kredyty.źródło
git clone
jedno z moich istniejących repozytoriów (tak naprawdę jest publiczne), został poproszony o mojeusername
, wpisz moją nazwę użytkownika GitHub, a następnie wstaw wygenerował token dlapassword
- usunął sklonowane repozytorium, a następnie zmieniłgo get
polecenie i wszystko było dobrze - dzięki! (Tutaj także OSX)Jeśli chcesz po prostu
go get
pracować naprawdę szybko i poruszać się wraz ze swoją pracą ...Po prostu eksportuj
GIT_TERMINAL_PROMPT=1
Zostanie teraz wyświetlony monit o podanie użytkownika / przepustki do końca sesji powłoki. Umieść to w swoim
.profile
lub konfiguracjigit
jak wyżej, aby uzyskać bardziej trwałe rozwiązanie.źródło
Narzeka, ponieważ musi używać
ssh
zamiast,https
ale twój git jest nadal skonfigurowany z https. więc w zasadzie, jak wspomniano wcześniej, musisz włączyć monity lub skonfigurować git, aby używałssh
zamiasthttps
. prosty sposób to zrobić, wykonując następujące czynności:lub jeśli już używasz
ssh
zgit
urządzeniem, możesz bezpiecznie edytować~/.gitconfig
i dodać następujący wiersz na samym doleUwaga: Obejmuje to całą SVC, kontrolę wersji źródłowej, która zależy od tego, czego dokładnie używasz, github, gitlab, bitbucket)
Jeśli chcesz wyłączyć pompki haseł, musisz buforować hasło. Aby uzyskać więcej informacji na temat buforowania hasła do github na komputerach Mac, Windows lub Linux, odwiedź tę stronę .
Aby uzyskać więcej informacji na temat dodawania ssh do konta github, odwiedź tę stronę .
Co ważniejsze, jeśli jest to prywatne repozytorium dla firmy lub dla ciebie, może być konieczne pominięcie bazy danych proxy lub sumy kontrolnej dla takich repozytoriów, aby uniknąć ich publicznego ujawnienia.
Aby to zrobić, musisz ustawić
GOPRIVATE
zmienną środowiskową, która kontroluje moduły, które komenda go uważa za prywatne (niedostępne publicznie) i dlatego NIE powinna używać bazy danych proxy ani sumy kontrolnej.Zmienna jest oddzieloną przecinkami listą wzorców (ta sama składnia Go
path.Match
) prefiksów ścieżek modułów. Na przykład,Lub
Ostatnią rzeczą, o której nie można zapomnieć, wciąż można skonfigurować
go get
uwierzytelnianie i pobieraniehttps
, wystarczy dodać następujący wiersz do$HOME/.netrc
Mam nadzieję, że pomoże to społeczności i pozwoli zaoszczędzić czas innych osób na szybkie rozwiązanie opisanych problemów. zostaw komentarz, jeśli chcesz uzyskać więcej wsparcia lub pomocy.
źródło
GOPRIVATE
(go env -w GOPRIVATE=github.com/mycompany/*
) jest jedyną rzeczą, która działała dla mnie. Mógłbym zasugerować umieszczenie tego pod własnym nagłówkiem lub nawet w odpowiedzi, aby podkreślić go nieco bardziej.Jeśli skonfigurujesz gitconfig za pomocą tej opcji, później wystąpi problem z klonowaniem innych repozytoriów GitHub
Zamiast tego zalecamy skorzystanie z tej opcji
i nie zapomnij wygenerować tokena dostępu z prywatnego repozytorium. Po wyświetleniu monitu o podanie hasła wystarczy wkleić token dostępu. Szczęśliwy klon :)
źródło
Miałem ten sam problem w systemie Windows „błąd: nie udało się wykonać skryptu zachęty (kod wyjścia 1) krytyczny: nie można odczytać nazwy użytkownika dla„ https://github.com ”: brak błędu” podczas próby zalogowania się do github poprzez okno logowania. Kiedy anulowałem okno dialogowe, git poprosił mnie o login i hasło w wierszu poleceń i działało dobrze.
źródło