J'ai un compte GitHub professionnel et un compte personnel. J'ai d'abord utilisé le projet personnel pour les projets de test, puis je suis passé à un référentiel avec l'autre compte sur le même ordinateur.
Maintenant, je voulais à nouveau créer un nouveau référentiel sur mon compte personnel, j'ai changé le user.name
global et local et créé une nouvelle paire de clés ssh, entrée dans la page de configuration de GitHub. Puis je crée le répertoire
git init
git remote add Origin <url>
git Push Origin
mais ça me dit maintenant
ERREUR: autorisation à personaluser/newrepo.git refusée à
Je n'ai aucune idée de la façon dont l'autre compte est connecté à celui-ci. .git/config
ne montre aucune workusername
choses liées.
Si vous utilisez Windows 10, prenez votre temps pour lire la réponse de Rajan.
cela ressemble beaucoup à mon travail actuel mis en place. il semble que vous ayez déjà configuré votre ssh-keys
séparé; vous devez donc également créer un fichier ~/.ssh/config
et le renseigner avec des informations similaires à celles-ci:
Host work.github.com
HostName github.com
User WORK_GITHUB_USERNAME
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_work_rsa
IdentitiesOnly yes
Host personal.github.com
HostName github.com
User PERSONAL_GITHUB_USERNAME
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_personal_rsa
IdentitiesOnly yes
Chaque propriété semble assez explicite, mais la variable IdentitiesOnly
. Je ne vais pas essayer d'expliquer à quoi ça sert, mais c'est dans ma configuration actuelle et ça fonctionne bien.
Il est également intéressant de noter que le Host URL
est juste un pointeur permettant de saisir les paramètres utilisateur corrects et n’a aucun effet sur l’affichage correct des fichiers dans votre URL HostName
cible.
Maintenant, vous devez simplement vous assurer que votre URL Origin
(ou toute remote
en général) correspond à la bonne URL Host
dans vos dépôts respectifs en fonction de votre nom d'utilisateur. Si vous avez déjà des pensions personnelles existantes, vous pouvez modifier le fichier .git/config
de cette pension dans votre éditeur de texte:
[remote "Origin"]
fetch = +refs/heads/*:refs/remotes/Origin/*
url = [email protected]:PERSONAL_GITHUB_USERNAME/project.git
ou le faire via la ligne de commande:
git remote set-url Origin [email protected]:PERSONAL_GITHUB_USERNAME/project.git
De même pour votre travail:
[remote "Origin"]
fetch = +refs/heads/*:refs/remotes/Origin/*
url = [email protected]:your_work_organization/project.git
ou encore, via la ligne de commande:
git remote set-url Origin [email protected]:your_work_organization/project.git
Bien sûr, vous pouvez toujours définir une de vos URL Host
dans votre fichier ~/.ssh/config
comme juste
Host github.com
J'ai seulement utilisé work.github.com
pour voir les relations de configuration plus facilement.
Une fois que tous ces éléments sont définis, vous devriez pouvoir appuyer sur chaque télécommande respective.
MODIFIER
Une chose à noter que je viens de découvrir moi-même, c'est que si vous définissez des valeurs globales de configuration git pour votre valeur user.email
(et que je suppose que user.name
enverrait également une valeur différente), git affichera vos commits en tant qu'utilisateur de messagerie. Pour contourner ce problème, vous pouvez remplacer les paramètres globaux de configuration de git dans votre référentiel local:
$ git config user.name "John Doe"
$ git config user.email [email protected]
Cela devrait maintenant envoyer les commits comme utilisateur correct pour ce dépôt.
Vous pouvez également simplement basculer sur https, plutôt que sur ssh. Si vous utilisez https, les paramètres .git/config seront respectés. Donc, dans .git/config, changez:
url = [email protected]:USER/PROJECT.git
à
url = https://[email protected]/USER/PROJECT.git
(ces valeurs sont sur la page du projet git, cliquez sur les boutons SSH
et HTTP
pour générer les nouvelles valeurs);
github vous identifie par la clé ssh qu'il voit, pas par aucun paramètre de git.
Par conséquent, vous devez vous assurer que la clé ssh de votre compte professionnel ne se trouve pas dans votre trousseau lorsque vous essayez d'utiliser votre compte personnel et inversement. Utilisez ssh-add -l
pour déterminer les clés présentes dans votre trousseau et ssh-add -d keyfile
pour les supprimer.
En outre, vous devrez peut-être vérifier ~/.ssh/config
si vous l'avez configuré pour présenter certaines clés ssh à github. Enfin, je ne sais pas comment github traite deux comptes avec la même clé publique ssh, alors assurez-vous de ne pas le faire.
Allez à Panneau de configuration> Comptes d'utilisateurs> Gestionnaire d'informations d'identification> Informations d'identification génériques.
supprimez les informations d'identification git. Puis lancez git Push. Cela incitera à demander les informations d'identification de git. Entrez vos informations d'identification correctes.
J'ai eu le même problème récemment parce que j'ai créé un nouveau compte github. J'ai essayé les réponses ci-dessus mais cela n'a pas aidé. Ensuite, j'ai lu un article quelque part sur la suppression de github dans Keychain Access (uniquement si vous utilisez mac ). Quand je suis git Push, il demande ensuite un nom d’utilisateur et un mot de passe, et cela a fonctionné!
J'ai eu le même problème. Il se trouve que j'avais deux comptes sur GitHub utilisant la même clé SSH et que GitHub utilisait par défaut le compte erroné qui n'était pas autorisé à effectuer le repo que je recherchais. J'ai supprimé la clé SSH du compte que je n'avais pas utilisé, mais qui a fonctionné comme prévu.
Vous pouvez tester le compte sur lequel GitHub s'authentifie:
ssh -T [email protected]
Pour moi, cela montrait à l’origine le mauvais nom d’utilisateur, mais après avoir supprimé la clé SSH en double de ce compte, le nom d’utilisateur correct était affiché, et mon extraction et la transmission à mon dépôt fonctionnaient bien.
C'est une façon de faire: vous pouvez utiliser différentes configurations ssh pour différents comptes ssh.
Mis à jour le 22 février:
Consultez ce lien: https://Gist.github.com/2351996
Si la modification de la clé SSH associée au compte ne fonctionne pas, modifiez le courrier électronique associé au compte.
Allez dans Github> Paramètres du compte> E-mails et vérifiez que l'adresse e-mail que vous utilisez pour valider correspond à l'e-mail du compte.
Pour voir quelle adresse électronique vous utilisez pour valider, exécutez la commande suivante: git config --global user.email
. Si vous devez modifier l'adresse e-mail que vous utilisez pour la validation, exécutez git config --global user.email "[email protected]"
.
Je sais que c'est peut-être un peu tard, mais je suis resté coincé avec ça pendant un bon bout de temps et je l'ai finalement résolu comme ça:
Aller dans l'accès au trousseau (osX)
recherche git (assurez-vous d'avoir sélectionné tous les éléments)
J'espère que cela t'aides!
J'ai le même problème. Voici ce qui se passe dans mon cas:
J'ai déjà fait git de ne pas demander mes informations d'identification chaque fois que je discute avec un référentiel distant de la manière suivante:
J'ai résolu le problème en exécutant la même commande avec "none" en remplacement de "wincred" Git config --global credential.helper none
Puis git demande à nouveau mon nom d’utilisateur/passe et tout se passe bien
J'ai eu ce problème aussi mais aucune des autres solutions n'a fonctionné pour moi. Il s’avère que pour le travail, nous avions créé un fichier .netrc
avec des entrées pour l’authentification github. La commande git
a toujours utilisé le .netrc
, qui contenait mon ancien nom d'utilisateur et mon ancien mot de passe. J'ai dû modifier les entrées de mon fichier .netrc
pour utiliser le nouveau nom d'utilisateur et le nouveau mot de passe.
Jamais eu de problèmes avec git jusqu'au travail, ils ont récemment connecté nos macbooks à Active Directory et ajouté quelques comptes d’administrateur à ma machine. Cependant, après ça, ça marcherait bien jusqu'à ce que je verrouille mon écran et que je revienne. Ensuite, j'obtiendrais une vague erreur similaire à
No user exists for uid 1927040837
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Je n'ai qu'une clé SSH sur cette machine particulière pour mon utilisateur et j'utilise zsh dans mon terme. L'email et le nom de l'utilisateur étaient corrects, alors ce n'était pas le problème. Ergo, redémarrer après chaque verrouillage de ma machine est inutile. La solution pour moi était de modifier mon fichier .zshrc
et de ne pas commenter la ligne qui exporte la clé ssh (ce que je n’avais jamais eu à faire auparavant et qui utilise zsh depuis des années).
La ligne devrait ressembler à ceci:
# ssh
export SSH_KEY_PATH="~/.ssh/<your_rsa_id>"
Une fois que vous faites cela, lancez simplement une reset
dans le terminal et tout fonctionnera bien.
J'espère que ça aidera quelqu'un d'autre.
J'ai rencontré ce problème aussi et aucune des solutions ci-dessus n'a fonctionné même après avoir supprimé ma clé ssh et en avoir créé une nouvelle. Il s'avère que ssh-agent utilisait une clé en cache, je devais donc exécuter killall ssh-agent
et ensuite cela fonctionnait.
Trouvé la solution ici. http://fzysqr.com/2012/08/28/quick-tip-wrong-ssh-key-cached-with-github-after-changing-users-and-keys/
J'aimerais ajouter que si vous travaillez sur le compte d'un autre utilisateur, assurez-vous de vous ajouter à la zone des collaborateurs sous les paramètres du référentiel.
Eh bien, j'ai passé toute une matinée à essayer de faire fonctionner correctement mes deux comptes github. Je dois à la fois cloner, commettre et pousser avec les deux. Donc, ne connaissant pas toutes les fins et les aboutissants, j'ai forcé une solution qui semble bien fonctionner pour moi.
En gros, je change mon profil git et ssh pour correspondre au compte que j'utiliserai ensuite jusqu'à ce que je change à nouveau.
J'ai deux comptes maintenant sur github, dhoerl et autre chose. J'ai des fichiers séparés dans mon répertoire .ssh pour le fichier id_rsa. Je devais ssh-add -D, puis ssh-add git_dhoerl et ssh-add theOtherOne.
J'ai deux commandes Shell qui me permettent de passer d'un profil à un autre. Chacun ressemble à ceci:
cd ~/.ssh
rm id_rsa
ln git_dhoerl id_rsa
git config --global user.email "myEmailAddr"
git config --global github.user "myAccountName"
git config --global github.token "myToken"
J'ai trouvé une solution temporaire dans laquelle exécuter d'abord killall ssh-agent
puis ajouter les clés ssh générées pour le compte que vous devez utiliser ssh-add ~/.ssh/id_4shameer
C’est l’un des moyens par lesquels nous pouvons utiliser plusieurs comptes github pour obtenir l’erreur de type ERROR: Permission to user/repo-git.git denied to username
.