Подтвердить что ты не робот

Go получить результаты в "отключении терминала" для github private repo

Я создал частный репозиторий 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

Почему мой ноутбук ненавидит мое собственное репо и как я могу заставить его принять свою судьбу? Спасибо.

4b9b3361

Ответ 1

go get отключает "подсказку терминала" по умолчанию. Это можно изменить, установив переменную окружения git:

env GIT_TERMINAL_PROMPT=1 go get github.com/examplesite/myprivaterepo

Ответ 2

Я нашел это чрезвычайно полезным, и это решило мою проблему. Эта команда позволит вашему 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.

Ответ 3

1-й - go get откажется go get аутентификацию в командной строке. Так что вам нужно кэшировать учетные данные в git. Поскольку я использую osx, я могу использовать помощник по учетным данным osxkeychain.

2-й Для меня, я включил 2FA и, следовательно, не мог использовать мой пароль для авторизации. Вместо этого мне пришлось сгенерировать личный токен доступа для использования вместо пароля.

  1. настройка помощника по учетным данным osxkeychain https://help.github.com/articles/caching-your-github-password-in-git/
  2. Если вместо пароля используется TFA, создайте личный токен доступа с областью репо https://github.com/settings/tokens.
  3. git клонирует частное репозиторий только для того, чтобы он кешировал пароль git clone https://github.com/user/private_repo и использовал ваше имя пользователя github.com для имени пользователя и сгенерированный токен личного доступа для пароля.
  4. Удалил только что клонированное хранилище и проведите повторное тестирование, чтобы убедиться, что кредиты были кэшированы - git clone https://github.com/user/private_repo и на этот раз не запрашивались кредиты.

    1. go get будет работать с любыми репозиториями, к которым может получить доступ токен личного доступа. Возможно, вам придется повторить шаги с другими учетными записями/токенами, поскольку разрешения различаются.

Ответ 4

Если вы просто хотите, чтобы go get работал очень быстро и двигался вместе с вашей работой...

Просто экспортируйте GIT_TERMINAL_PROMPT=1

$ export GIT_TERMINAL_PROMPT=1
$ go get [whatever]

Теперь вам будет предложено ввести пользователя/пароль для остальной части сеанса оболочки. Поместите это в свой .profile или setup git, как указано выше, для более постоянного решения.

Ответ 5

У меня была такая же проблема в Windows: "ошибка: не удалось выполнить скрипт подсказки (код выхода 1). Fatal: не удалось прочитать имя пользователя для https://github.com: нет ошибки" при попытке войти в github через диалоговое окно входа в систему. Когда я отменил диалог, git попросил меня ввести логин и пароль в командной строке, и все заработало нормально.

Ответ 6

Если вы сконфигурируете свой gitconfig с этой опцией, у вас позже будет проблема клонировать другие репозитории GitHub.

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

Вместо этого я рекомендую вам использовать эту опцию

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

и не забудьте сгенерировать токен доступа из вашего личного репозитория. Когда будет предложено ввести пароль, просто вставьте токен доступа. Счастливый клон :)