web-dev-qa-db-fra.com

va chercher les résultats dans l'erreur 'invite de terminal désactivé' pour le dépôt privé github

J'ai créé le site de dépôt privé examplesite/myprivaterepo à l'aide de l'interface utilisateur Github de mon navigateur.

Ensuite, je suis allé dans mon répertoire go (sur le bureau) et je l'ai cloné:

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

Jusqu'ici tout va bien. Créé le fichier scheduler.go, ajouté au repo et poussé.

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

Tout va bien. Mais quand je suis allé sur un ordinateur portable propre et que j'ai essayé de cloner le repo, j'ai eu une erreur:

# 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

Pourquoi mon ordinateur portable déteste-t-il mon propre dépôt et comment puis-je le convaincre d'accepter son destin? Merci.

136
tomcam

go get désactive "l'invite du terminal" par défaut. Cela peut être changé en définissant une variable d'environnement de git:

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

J'ai trouvé cela extrêmement utile et cela a résolu mon problème. Cette commande permettra à votre 2FA de faire son travail (et vous évitera la peine d'entrer votre nom d'utilisateur et votre mot de passe):

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

Source: http://albertech.blogspot.com/2016/11/fix-git-error-could-not-read-username.html

Si vous n'utilisez pas 2FA, vous pouvez toujours utiliser SSH et cela fonctionnera.

Edit: ajout du drapeau --add comme suggéré par slatunje .

206
Wylliam Judd

1st - go get refusera de s'authentifier sur la ligne de commande. Vous devez donc mettre en cache les informations d'identification dans git. Parce que j'utilise osx, je peux utiliser l'assistant de justificatif d'identité osxkeychain.

2ème Pour moi, j'ai 2FA activé et donc ne pouvais pas utiliser mon mot de passe pour authentifier. Au lieu de cela, j'ai dû générer un jeton d'accès personnel à utiliser à la place du mot de passe.

  1. assistant de configuration des informations d'identification osxkeychain https://help.github.com/articles/caching-your-github-password-in-git/
  2. Si vous utilisez TFA au lieu d’utiliser votre mot de passe, générez un jeton d’accès personnel avec une portée de dépôt https://github.com/settings/tokens
  3. git clone un dépôt privé juste pour le mettre en cache le mot de passe git clone https://github.com/user/private_repo et utilise votre nom d'utilisateur github.com pour le nom d'utilisateur et le jeton d'accès personnel généré pour le mot de passe.
  4. Suppression du dépôt cloné et du nouveau test pour s'assurer que les crédits ont été mis en cache - git clone https://github.com/user/private_repo et que cette fois-ci, les creds n'ont pas été demandés.

    1. go get fonctionnera avec tous les dépôts auxquels le jeton d'accès personnel peut accéder. Vous devrez peut-être répéter les étapes avec d'autres comptes/jetons, car les autorisations varient.
36
Mike Graf

Si vous voulez juste que go get travaille très vite et que vous avançiez dans votre travail ...

Il suffit d'exporter GIT_TERMINAL_Prompt=1

$ export GIT_TERMINAL_Prompt=1
$ go get [whatever]

Il vous demandera maintenant un utilisateur/passe pour le reste de votre session Shell. Mettez ceci dans votre .profile ou votre configuration git comme ci-dessus pour une solution plus permanente.

12
EdH

Si vous configurez votre gitconfig avec cette option, vous rencontrerez ultérieurement un problème pour cloner d'autres repos de GitHub.

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

Au lieu de cela, je vous recommande d'utiliser cette option

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

et n'oubliez pas de générer un jeton d'accès à partir de votre référentiel privé. Lorsque vous êtes invité à entrer votre mot de passe, collez simplement le jeton d'accès. Heureux clone :)

0
cooljl86

J'ai le même problème sous Windows "Erreur: échec de l'exécution du script d'invite (code de sortie 1) fatal: impossible de lire le nom d'utilisateur pour ' https://github.com ': Aucune erreur" lors de la connexion. github à travers la boîte de dialogue de connexion. Quand j'ai annulé la boîte de dialogue, Git m'a demandé un identifiant et un mot de passe dans la ligne de commande et cela a bien fonctionné.

0
Nick Proto