95 votes

Git poussant vers le référentiel GitHub distant en tant qu'utilisateur incorrect

J'ai un travail GitHub compte et personnelle. J'ai d'abord utilisé le un pour des projets de test, puis j'ai déménagé et fait un dépôt avec l'autre compte sur le même ordinateur.

Maintenant, je voulais créer un nouveau dépôt sur mon compte personnel, encore une fois, j'ai changé le global et le local, user.name, et a fait une nouvelle paire de clés ssh, est entré dans le GitHub de la page de configuration. Puis-je configurer le répertoire

git init
git remote add origin <url>
git push origin

mais qui me dit maintenant

ERREUR: Permission de personaluser/newrepo.git refusé à l'

Je n'ai aucune idée de comment l'autre compte est relié à celle-ci. .git/config montre pas d' workusername choses liées.

97voto

hellatan Points 1013

cela semble très similaire à mon travail actuel mis en place. il semble que vous avez déjà configuré votre séparée ssh-keys de sorte que vous devez également créer un ~/.ssh/config le fichier et de le remplir avec des informations similaires à ceci:

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

Tous les biens des sons assez explicite, mais l' IdentitiesOnly on. Je ne vais pas essayer d'expliquer ce que c'est, mais c'est dans ma configuration actuelle et fonctionne très bien.

Il est également intéressant de noter que l' Host URL est un pointeur pour saisir la correcte des paramètres de l'utilisateur et de ne pas avoir une incidence sur l'obtention de la correctement les fichiers de votre cible HostName d'url.

Maintenant, il vous suffit de vous assurer que votre origin (ou tout remote en général) url de match correcte Host url dans votre repos en fonction de votre nom d'utilisateur. Si vous avez déjà existants personnels repos, vous pouvez modifier que les pensions de l' .git/config le fichier dans votre éditeur de texte:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@personal.github.com:PERSONAL_GITHUB_USERNAME/project.git

ou de le faire via la ligne de commande:

git remote set-url origin git@personal.github.com:PERSONAL_GITHUB_USERNAME/project.git

De même pour votre travail:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@work.github.com:your_work_organization/project.git

ou encore, via la ligne de commande:

git remote set-url origin git@work.github.com:your_work_organization/project.git

Bien sûr, vous pouvez toujours demander à un de vos Host des url dans votre ~/.ssh/config le fichier que juste

Host github.com

J'ai seulement utilisé work.github.com voir la config des relations plus facile.

Une fois tous ensemble, vous devriez être en mesure de pousser à chaque distance.

MODIFIER

Une chose à noter que je viens de trouver moi-même, c'est que si jamais vous set global git config valeurs pour votre user.email de la valeur (et je devine user.name enverrait une autre valeur), git va montrer votre s'engage en tant que e-mail de l'utilisateur. Pour contourner ce problème, vous pouvez remplacer le git config paramètres dans votre dépôt local:

$ git config user.name "John Doe"
$ git config user.email johndoe@example.com

Cela devrait maintenant envoyer jusqu's'engage en tant que l'utilisateur approprié pour que les pensions de titres.

42voto

yuttadhammo Points 1562

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 = git@github.com:USER/PROJECT.git

à

url =

(ces valeurs sont sur la page du projet git, cliquez sur les boutons https://USER@github.com/USER/PROJECT.git et pour connaître les nouvelles valeurs);

37voto

Walter Mundt Points 9160

github vous identifie par la clé ssh il voit, pas par n'importe quel paramètre à partir de git.

Par conséquent, vous devez vous assurer que votre compte de travail de la clé ssh n'est pas dans votre trousseau de clés lorsque vous essayez de faire de votre compte personnel et vice versa. Utiliser ssh-add -l pour déterminer les clés qui sont dans votre trousseau de clés, et ssh-add -d keyfile pour supprimer une clé de votre porte-clés.

Aussi, vous pouvez avoir besoin de vérifier ~/.ssh/config si vous l'avez configuré pour présenter certains des clés ssh pour github. Enfin, je ne sais pas comment github traite avec deux comptes ayant la même clé publique ssh, donc assurez-vous de ne pas le faire.

13voto

flipjs.io Points 11

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 de Keychain Access (uniquement si vous utilisez mac ). Lorsque je git push, il demande ensuite un nom d'utilisateur et un mot de passe, et cela a fonctionné!

10voto

asksw0rder Points 399

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X