Comment réinitialiser les informations d'identification stockées dans 'git credential-osxkeychain'?

98

J'ai suivi les instructions de GitHub pour configurer mon compte, et je peux cloner, mais je ne peux pas pousser à distance.

Quand je fais un "git push", j'obtiens l'erreur 403. Il a l'URL correcte. J'ai essayé un "git credential-osxkeychain get" pour voir ce qu'il donnait, et cela affiche les mauvaises informations d'identification.

Je pense que ce qui s'est passé est la première fois qu'il a demandé les informations d'identification, je pensais que c'était une autre demande d'application, et il a mis les mauvaises.

J'ai juste besoin de le réinitialiser pour qu'il utilise l'élément de trousseau approprié pour mon compte GitHub.

J'ai essayé:

git credential-osxkeychain erase
git credential-osxkeychain set

Le programme ne donne jamais aucune invite. Set dira "mauvaise entrée" si je ne fais pas la bonne chose. J'ai essayé de mettre " password=password", etc., mais quand je fais un "get", j'obtiens toujours les anciens.

Je ne peux pas savoir où ils sont stockés, car ils ne sont pas dans .gitconfigure. De plus, il n'y a aucun élément de trousseau récent qui pourrait l'être. (J'ai plusieurs comptes GitHub dans mon trousseau et il n'en utilise aucun.)

nirvana
la source
Associé, agnostique de l'aide aux informations d'identification: stackoverflow.com/questions/21745213/…
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
Probablement la même chose sous Windows: stackoverflow.com/questions/15381198/…
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Réponses:

122

Depuis le terminal:

 $ git credential-osxkeychain erase
 host=github.com
 protocol=https
 <press return>

REMARQUE: après avoir entré «protocole = https» ci-dessus, vous devez appuyer sur ~~ RETURN ~~ DEUX FOIS

maz
la source
2
Pour une raison quelconque, je n'ai pas trouvé d'informations d'identification Git / GitHub dans l'application Keychain, mais cela a fonctionné. Merci!
Donald
4
Comme ce n'était pas clair pour moi: vous devez entrer les 3 lignes ci-dessus, puis appuyer à nouveau sur retour - c'est-à-dire que les lignes 2/3 ci-dessus ne sont pas sorties de la commande, mais entrées.
Frederik
Cette réponse m'a aidé. Merci beaucoup!
Ken Flake
70

Je ne sais pas comment effacer via la ligne de commande, mais il est assez facile de le faire via l'application Keychain Access. Allez simplement dans Applications -> Utilities -> Keychain Access, puis entrez "github.com". Vous pouvez supprimer l'élément non valide ou mettre à jour le mot de passe avec l'application.

benzado
la source
4
Si quelqu'un lisant ceci comprend comment faire à partir de la ligne de commande, ce serait bien de le savoir.
funroll
1
@funroll L'outil de ligne de commande est security. La page de manuel indique qu'elle a une delete-internet-passwordcommande.
benzado
Merci pour la mise à jour, je suis sûr que cela sera utile à quelqu'un.
funroll
c'est la meilleure solution
Elias Fazel
De quel porte-clés?
Bryan Bryce le
28

La solution s'est avérée être la suivante:

La commande git credential-osxkeychainutilisait la première entrée de compte GitHub dans mon trousseau. Celui-ci n'était pas celui qui avait accès aux projets en question.

J'ai résolu le problème en touchant le compte dans Keychain Access pour que sa date change (je pense que je viens de changer le commentaire) et maintenant qu'il est devenu le compte GitHub le plus récent, il est devenu le premier à revenir à credential-osxkeychain, et donc tout a fonctionné .

Une meilleure forme de support pour plusieurs comptes GitHub serait bien, mais il est probable que la plupart des gens n'ont qu'un seul compte principal et ne rencontrent pas ce problème.

nirvana
la source
2
Je ne sais pas comment cela fonctionne pour plusieurs utilisateurs sur le même hôte, mais vous pouvez consulter ssh et utiliser un ~/.ssh/configfichier au lieu d'utiliser le trousseau OSX. Ceci est utilisé dans les cas où vous pouvez avoir plusieurs clés ssh pour différents hôtes (et des comptes pensants également). nerderati.com/2011/03/17/…
jusopi
10

git-credential-osxkeychain stocke les mots de passe dans le trousseau Apple, comme indiqué ci-dessus.

Par défaut, gitcredentials ne considère que le nom de domaine. Si vous voulez que Git considère le chemin complet (par exemple, si vous avez plusieurs comptes GitHub), définissez la useHttpPathvariable sur true, comme décrit à http://git-scm.com/docs/gitcredentials.html . Notez que la modification de ce paramètre vous demandera à nouveau vos informations d'identification pour chaque URL.

MacFreek
la source
7

Sur Mac, utilisez la commande git credential-osxkeychain erase.

OU supprimez manuellement du trousseau depuis ApplicationsUtilitairesAccès au trousseau . Retirez ensuite le trousseau github.com. Ensuite, utilisez push; il demandera l'accès au trousseau; puis niez.

Il demandera le nouveau nom d'utilisateur et mot de passe, l'ajoutera puis poussera un fichier pour cela.

Après git pushavoir trouvé cette erreur. Ensuite, j'utilise le numéro majuscule:

remote: Autorisation à user1 / file.git refusée à user2 (ancien utilisateur existant). fatal: impossible d'accéder à ' https://github.com/xxxxxxxxxxxx/ ': l'URL demandée a renvoyé l'erreur: 403

Amit Kumar
la source
6

Essayez de courir /Applications/Utilities/Keychain Access.

echristopherson
la source