Ответ 1
go get отключает "подсказку терминала" по умолчанию. Это можно изменить, установив переменную окружения git:
env GIT_TERMINAL_PROMPT=1 go get github.com/examplesite/myprivaterepo
Я создал частный репозиторий examplesite/myprivaterepo, используя интерфейс Github из моего браузера.
Затем я пошел в свой каталог go (на рабочем столе) и клонировал его:
$ cd $GOPATH
$ go get github.com/examplesite/myprivaterepo
Пока все хорошо. Создал файл scheduler.go, добавлен в repo и нажал.
$ vim scheduler.go
$ git add scheduler.go
$ git commit
$ git push
Everythng OK. Но когда я пошел на чистый ноутбук и попытался клонировать репо, я получил сообщение об ошибке:
# 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
Почему мой ноутбук ненавидит мое собственное репо и как я могу заставить его принять свою судьбу? Спасибо.
go get отключает "подсказку терминала" по умолчанию. Это можно изменить, установив переменную окружения git:
env GIT_TERMINAL_PROMPT=1 go get github.com/examplesite/myprivaterepo
Я нашел это чрезвычайно полезным, и это решило мою проблему. Эта команда позволит вашему 2FA сделать свое дело (и избавит вас от необходимости ввода имени пользователя и пароля):
git config --global --add url."[email protected]:".insteadOf "https://github.com/"
Источник: http://albertech.blogspot.com/2016/11/fix-git-error-could-not-read-username.html
Если вы не используете 2FA, вы все равно можете использовать SSH, и это будет работать.
Изменение: добавлен флаг --add
как предложено slatunje.
1-й - go get
откажется go get
аутентификацию в командной строке. Так что вам нужно кэшировать учетные данные в git. Поскольку я использую osx, я могу использовать помощник по учетным данным osxkeychain.
2-й Для меня, я включил 2FA и, следовательно, не мог использовать мой пароль для авторизации. Вместо этого мне пришлось сгенерировать личный токен доступа для использования вместо пароля.
git clone https://github.com/user/private_repo
и использовал ваше имя пользователя github.com для имени пользователя и сгенерированный токен личного доступа для пароля. Удалил только что клонированное хранилище и проведите повторное тестирование, чтобы убедиться, что кредиты были кэшированы - git clone https://github.com/user/private_repo
и на этот раз не запрашивались кредиты.
Если вы просто хотите, чтобы go get
работал очень быстро и двигался вместе с вашей работой...
Просто экспортируйте GIT_TERMINAL_PROMPT=1
$ export GIT_TERMINAL_PROMPT=1
$ go get [whatever]
Теперь вам будет предложено ввести пользователя/пароль для остальной части сеанса оболочки. Поместите это в свой .profile
или setup git
, как указано выше, для более постоянного решения.
У меня была такая же проблема в Windows: "ошибка: не удалось выполнить скрипт подсказки (код выхода 1). Fatal: не удалось прочитать имя пользователя для https://github.com: нет ошибки" при попытке войти в github через диалоговое окно входа в систему. Когда я отменил диалог, git попросил меня ввести логин и пароль в командной строке, и все заработало нормально.
Если вы сконфигурируете свой gitconfig с этой опцией, у вас позже будет проблема клонировать другие репозитории GitHub.
git config --global --add url. "[email protected]". Instead, "https://github.com/"
Вместо этого я рекомендую вам использовать эту опцию
echo "export GIT_TERMINAL_PROMPT=1" >> ~/.bashrc || ~/.zshrc
и не забудьте сгенерировать токен доступа из вашего личного репозитория. Когда будет предложено ввести пароль, просто вставьте токен доступа. Счастливый клон :)