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.
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
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 .
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.
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.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.
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.
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 :)
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é.