web-dev-qa-db-ja.com

githubプライベートリポジトリの 'terminal prompt disabled'エラーになる

私のブラウザからGithub UIを使用してプライベートリポジトリexamples/myprivaterepoを作成しました。

それから私は(デスクトップ上の)私のgoディレクトリに行き、それをクローンしました:

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

ここまでは順調ですね。ファイルscheduler.goを作成し、リポジトリに追加してプッシュしました。

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

Everythngは大丈夫です。しかし、私がきれいなラップトップに行き、レポをクローンしようとしたとき、私はエラーを得ました:

# 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

ラップトップが自分のレポを嫌っているのはなぜでしょうか。ありがとう。

123
tomcam

go getはデフォルトで "terminal prompt"を無効にします。これはgitの環境変数を設定することで変更できます。

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

私はこれが非常に有用であると思った、そしてそれは私の問題を解決した。このコマンドはあなたの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を使用できます。これは機能します。

編集: slatunje で示唆されているように--addフラグを追加しました。

185
Wylliam Judd

1st - go getはコマンドラインでの認証を拒否します。それで、あなたはgitで信任状をキャッシュする必要があります。 osxを使用しているので、osxkeychain認証情報ヘルパーを使用できます。

2nd私には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のユーザー名をusernameに、生成されたパーソナルアクセストークンをpasswordに使用しました。
  4. クレジットがキャッシュされていることを確認するために複製されたレポと再テストを削除しました - git clone https://github.com/user/private_repoと今回はクレジットを要求されませんでした。

    1. パーソナルアクセストークンがアクセスできるすべてのリポジトリで動作します。権限が異なるため、他のアカウント/トークンについても手順を繰り返す必要があります。
35
Mike Graf

go getを本当に速く動かしたい、そしてあなたの仕事に沿って動いてほしいだけなら...

GIT_TERMINAL_Prompt=1をエクスポートするだけです

$ export GIT_TERMINAL_Prompt=1
$ go get [whatever]

それは今あなたにユーザーのためのプロンプトを出します/あなたのシェルセッションの残りのためにパスします。より恒久的な解決策として、これを上記のように.profileまたはsetup gitに入れてください。

10
EdH

このオプションを使用してgitconfigを構成すると、後でGitHubの他のリポジトリを複製する際に問題が発生します

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

代わりに、このオプションを使用することをお勧めします

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

また、プライベートリポジトリからアクセストークンを生成することを忘れないでください。パスワードの入力を求められたら、アクセストークンを貼り付けます。ハッピークローン:)

0
cooljl86

Windowsで同じエラーが発生しました。「エラー:プロンプトスクリプトの実行に失敗しました(終了コード1)致命的: ' https://github.com 'のユーザー名を読み取れませんでした」ログインダイアログを使用してgithubにアクセスします。ダイアログをキャンセルすると、gitはコマンドラインでログインとパスワードを要求し、正常に機能しました。

0
Nick Proto