web-dev-qa-db-fra.com

Plusieurs comptes github sur le même ordinateur?

J'essaie de travailler à la fois sur mon "travail" réel et sur mon propre dépôt sur mon hub git.

Le compte de travail a été créé en premier et tout fonctionne parfaitement.

Mon compte personnel ne semble toutefois pas pouvoir accéder à mon compte personnel, qui est configuré sous un autre compte/email.

J'ai essayé de copier ma clé de travail sur mon compte personnel, mais cela génère une erreur, car une clé ne peut bien sûr être attachée qu'à un seul compte.

Comment puis-je pousser/tirer vers et à partir des deux comptes, à partir de leurs informations d'identification github respectives?

309
Kevin Whitaker

Tout ce que vous avez à faire est de configurer votre configuration SSH avec plusieurs paires de clés SSH.

De même, si vous travaillez avec plusieurs référentiels utilisant différentes personnalités, vous devez vous assurer que les paramètres utilisateur de vos référentiels individuels sont remplacés en conséquence:

Définition du nom d'utilisateur, de l'email et du jeton GitHub - Remplacement des paramètres pour des dépôts individuels https://help.github.com/articles/setting-your-commit-email-address-in-git/

J'espère que cela t'aides.

Note: Certains d'entre vous peuvent exiger que différents emails soient utilisés pour différents référentiels, à partir de git 2.13, vous pouvez définir l'email par répertoire en modifiant le fichier de configuration global trouvé à l'adresse: ~/.gitconfig à l'aide de conditionals comme suit:

[user]
    name = Pavan Kataria
    email = [email protected]

[includeIf "gitdir:~/work/"]
    path = ~/work/.gitconfig

Et ensuite, votre configuration spécifique au travail ~/work/.gitconfig ressemblerait à ceci:

[user]
    email = [email protected]

Merci à @alexg de m'avoir informé de cela dans les commentaires. 

200
Pavan

Utilisez HTTPS:

changer l'URL distante en https:

git remote set-url Origin https://[email protected]/USERNAME/PROJECTNAME.git

et vous êtes prêt à partir:

git Push

Pour vous assurer que les validations apparaissent comme effectuées par USERNAME, vous pouvez également configurer user.name et user.email pour ce projet également:

git config user.name USERNAME
git config user.email [email protected]
106
Greg Leszek

En créant différents alias d’hôte sur github.com dans votre ~/.ssh/config, Et en attribuant à chaque alias sa propre clé ssh, vous pouvez facilement utiliser plusieurs comptes Github sans confusion ..__, car github .com ne distingue pas l'utilisateur, ce qui est toujours juste git, mais la clé ssh que vous utilisiez pour vous connecter .. Configurez simplement vos origines distantes à l'aide de vos propres alias d'hôte. "

Le résumé ci-dessus est une gracieuseté des commentaires sur le blog ci-dessous.

J'ai trouvé cette explication la plus claire. Et ça marche pour moi, au moins à partir d’avril 2012.

http://net.tutsplus.com/tutorials/tools-and-tips/how-to-work-with-github-and-multiple-accounts/

23
mishaba

Les détails à http://net.tutsplus.com/tutorials/tools-and-tips/how-to-work-with-github-and-multiple-accounts/ liés à par mishaba fonctionnent très bien pour moi .

De cette page:

$ touch ~/.ssh/config

Puis modifiez ce fichier pour qu’il ressemble à ceci (une entrée par compte):

#Default GitHub
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa

Host github-COMPANY
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_COMPANY
19
Matthew Skelton

J'utilise des scripts Shell pour me connecter à n'importe quel compte sur lequel je veux être "actif". Essentiellement, vous démarrez d'un nouveau départ, configurez un compte correctement et qu'il fonctionne correctement, puis déplacez ces fichiers vers un nom avec le préfixe approprié. À partir de là, vous pouvez utiliser la commande "github" ou "gitxyz" pour passer:

# my github script
cd ~/.ssh

if [ -f git_dhoerl -a -f git_dhoerl.pub -a -f config_dhoerl ]
then
    ; 
else 
    echo "Error: missing new files"
    exit 1
fi 

# Save a copy in /tmp, just in case
cp id_rsa /tmp
cp id_rsa.pub /tmp
cp config /tmp
echo "Saved old files in /tmp, just in case"

rm id_rsa
rm id_rsa.pub
rm config
echo "Removed current links/files"

ln git_dhoerl id_rsa
ln git_dhoerl.pub id_rsa.pub
ln config_dhoerl config

git config --global user.email "dhoerl@<company>.com"
git config --global github.user "dhoerl"        
git config --global github.token "whatever_it_is"

ssh-add -D

J'ai eu beaucoup de chance avec ça. J'ai également créé un script d'exécution dans Xcode (pour vous, utilisateurs Mac) afin qu'il ne construise pas mon projet à moins de disposer du paramètre approprié (car il utilise git):

Exécuter le script placé après les dépendances (en utilisant/bin/ksh en tant que shell):

if [ "$(git config --global --get user.email)" != "dhoerl@<company>.com" ]
then
    exit 1
fi

EDIT: ajout de tests d’existence de nouveaux fichiers et de copie d’anciens fichiers dans/tmp afin de répondre aux commentaires de @naomik ci-dessous.

11
David H

Merci utilisateur1107028:

Utilisez HTTPS:

changer l'URL distante en https:

git remote set-url Origin https: //[email protected]/USERNAME/PROJECTNAME.git et vous êtes bon aller:

git Push

J'ai trouvé cela le meilleur moyen d'utiliser plusieurs comptes github. Je ne peux pas utiliser un seul compte, ce n'est tout simplement pas possible, et je ne pouvais pas me comporter avec SSH, peu importe ce que je faisais. J'ai voté pour la réponse, mais je n'ai pas assez de points - je voulais reconnaître cette solution de contournement simple pour ceux qui, comme moi, ont besoin d'une solution claire et simple. Cela a fonctionné du premier coup et m'a épargné des heures supplémentaires.

8
Boshy
  • Aller à ~/.ssh
  • Créer un fichier nommé config (sans extension)
  • Ouvrez le fichier de configuration et ajoutez les codes ci-dessous. (change selon votre compte)

    1. Compte 1

      # account_1
      Host gitlab.com-account_1
      HostName gitlab.com
      User git
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa_account_1
      
    2. Compte 2

      # Account2
      Host gitlab.com-Account2
      HostName gitlab.com
      User git
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa_Account2
      
    3. Compte 3

      # Account_3
      Host github.com-Account3
      HostName github.com
      User git
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa_Account_3
      
  • Ajouter une URL distante comme suit

    1. Compte 1

      git remote add Origin [email protected]_1:group_name/repo_name.git
      
    2. Compte 2

      git remote add Origin [email protected]:group_name/repo_name.git
      
    3. Compte 3

      git remote add Origin github.com-Account3:github_username/repo_name.git
      

Assurez-vous que les noms IdentityFile sont identiques à ceux que vous avez créés lors de la génération de la clé ssh.

8
Pranav V R

Cette réponse est pour débutants (non-gourous) . J'ai récemment eu ce problème et c'est peut-être juste moi, mais la plupart des réponses semblaient nécessiter une compréhension assez avancée de git. Après avoir lu plusieurs réponses au débordement de pile, y compris ce fil, voici les étapes à suivre pour permuter facilement entre les comptes GitHub (par exemple, supposons deux comptes GitHub, github.com/personal et gitHub.com/work): 

  1. Recherchez les clés ssh existantes:Ouvrez le terminal et exécutez cette commande pour voir/répertorier les clés ssh existantes ls -al ~/.ssh 
    les fichiers avec l'extension .pub sont vos clés ssh, vous devriez donc en avoir deux pour les comptes personal et work. S'il n'y en a qu'un ou aucun, il est temps de passer à autre chose.

    - Génération de la clé ssh: connectez-vous à github (le dossier personnel ou professionnel), accédez à Paramètres et copiez le courrier électronique associé.
    maintenant, retournez à Terminal et lancez ssh-keygen -t rsa -C "the copied email", vous verrez:

    Génération d'une paire de clés rsa publique/privée.
    Entrez le fichier dans lequel enregistrer la clé (/.../.ssh/id_rsa):


    id_rsa est le nom par défaut de la clé ssh à générer, copiez le chemin et renommez le nom par défaut, par exemple. /.../.ssh/id_rsa_work si vous générez pour un compte professionnel. fournissez un mot de passe ou entrez simplement pour ignorer et, vous lirez quelque chose comme L'image de la clé au hasard est: et l'image. terminé.
    Répétez cette étape une fois de plus pour votre deuxième compte github. Assurez-vous d’utiliser la bonne adresse électronique et un nom de clé ssh différent (par exemple, id_rsa_personal) pour éviter tout écrasement.
    A ce stade, vous devriez voir deux clés ssh lors de l'exécution de ls -al ~/.ssh à nouveau.
  2. Associer une clé ssh à un compte gitHub: La prochaine étape consiste à copier l'une des clés ssh, exécutez-la en remplaçant votre propre nom de clé ssh: pbcopy < ~/.ssh/id_rsa_work.pub, remplacez id_rsa_work.pub par ce que vous avez appelé.
    Maintenant que notre clé ssh est copiée dans le presse-papiers, retournez au compte github [Assurez-vous que vous êtes connecté à un compte professionnel si la clé ssh que vous avez copiée est id_rsa_work] et accédez à
    Paramètres - Clés SSH et GPG et cliquez sur le bouton Nouvelle clé SSH (pas Nouvelle clé GPG btw: D)
    Donnez un titre à cette clé, collez-la et cliquez sur Ajouter une clé SSH. Vous avez maintenant soit ajouté avec succès la clé ssh, soit remarqué qu'elle y était depuis le début, ce qui est très bien (ou vous avez une erreur parce que vous avez sélectionné Nouvelle clé GPG au lieu de Nouvelle clé SSH: D). 
  3. Associer la clé ssh au compte gitHub : Répétez l’étape ci-dessus pour votre deuxième compte.
  4. Éditez la configuration globale de git: / La dernière étape consiste à s’assurer que le fichier de configuration globale est au courant de tous les comptes github (pour ainsi dire).
    Exécutez git config --global --edit pour modifier ce fichier global. Si cela ouvre vim et que vous ne savez pas comment l'utiliser, appuyez sur i pour passer en mode insertion, modifiez le fichier comme ci-dessous, puis appuyez sur échap suivi de :wq pour quitter le mode insertion: 

    [inside this square brackets give a name to the followed acc.] name = github_username email = github_emailaddress [any other name] name = github_username email = github_email [credential] helper = osxkeychain useHttpPath = true

Terminé !, maintenant, lorsque vous essayez de pousser ou d'extraire d'un dépôt, il vous sera demandé quel compte GitHub doit être associé à ce dépôt et demandé une seule fois. La configuration locale se souviendra de ce lien et non de la configuration globale pour que vous puissiez travailler. sur différents dépôts liés à différents comptes sans avoir à éditer la configuration globale à chaque fois. 

7
Lukas

Solution simple et facile pour éviter les confusions.

Pour les utilisateurs Windows, utiliser plusieurs comptes git ou différents pour différents projets.

Les étapes suivantes:

Supprimez maintenant le noeud git: https // github.com sous la rubrique Informations d'identification génériques

Cela supprimera les informations d'identification actuelles. Maintenant, vous pouvez ajouter n'importe quel projet via git pull, il vous demandera un nom d'utilisateur et un mot de passe. 

Lorsque vous rencontrez un problème avec un autre compte, procédez de la même manière.

Merci

se référer à l'image

2
Raja Shakir

Outre la création de plusieurs clés SSH pour plusieurs comptes, vous pouvez également ajouter collaborateurs à chaque projet en utilisant les mêmes adresses e-mail et stocker le mot de passe de manière permanente.

#this store the password permanently
$ git config --global credential.helper wincred

J'ai configuré plusieurs comptes avec différents emails, puis mis le même utilisateur et le même email sur chaque compte en tant que l'un des collaborateurs. De cette manière, je peux accéder à tous les comptes sans ajouter de clé SSH, ni basculer vers un autre nom d'utilisateur, et envoyer un courrier électronique pour l'authentification.

2
Chetabahana

J'ai trouvé ce petit bijou très utile: sshwitch

https://github.com/agush22/sshwitch
http://rubygems.org/gems/sshwitch

Il est utile de changer les clés SSH. N'oubliez pas de tout sauvegarder en premier!

De plus, afin de m'assurer que les validations sont associées à la bonne adresse électronique, je me suis assuré que le fichier ~/.gitconfig avait la bonne adresse électronique.

2
agsdot

Contrairement aux autres réponses, où vous devez suivre quelques étapes pour utiliser deux différents _ {github compte de la même machine, cela fonctionnait pour moi dans deux étapes.

Vous avez juste besoin de:

1) Générez paire de clés publique et privée SSH pour chacun de vos comptes sous ~/.ssh avec différents noms et 

2) ajoutez les clés publiques générées au compte correspondant sous Settings >> SSH and GPG keys >> New SSH Key.

Pour générer les paires de clés publique et privée SSH, utilisez la commande suivante:

cd ~/.ssh
ssh-keygen -t rsa -C "[email protected]" -f "id_rsa_WORK"
ssh-keygen -t rsa -C "[email protected]" -f "id_rsa_PERSONAL"

A la suite des commandes ci-dessus, les fichiers id_rsa_WORK et id_rsa_WORK.pub seront créés pour votre compte travail (ex-git.work.com) et id_rsa_PERSONAL et id_rsa_PERSONAL.pub seront créés pour votre compte personnel (ex - github.com).

Une fois créé, copiez le contenu de chaque fichier public (*.pub) et passez à l’étape 2 pour chaque compte.

PS: Il n'est pas nécessaire de créer une entrée d'hôte pour chaque compte git sous le fichier ~/.ssh/config, comme indiqué dans d'autres réponses, si le nom d'hôte de vos deux comptes est différent.

0
Sahil Chhabra

Vous n'êtes pas obligé de gérer deux comptes différents pour votre compte personnel et professionnel. En fait, Github vous recommande de conserver un compte unique et vous aide à fusionner les deux. 

Suivez le lien ci-dessous pour fusionner si vous décidez qu'il n'est pas nécessaire de gérer plusieurs comptes. 

https://help.github.com/articles/merging-multiple-user-accounts/

0
Eric Blair

un autre moyen plus simple consiste à utiliser plusieurs applications de bureau, comme ce que je fais, à utiliser le compte A sur le bureau Github, tout en utilisant le compte B sur Github Kraken.

0
Jet Yu

L'approche la plus simple et directe (IMHO) - pas de fichiers de configuration, pas trop de tracas 

Créez simplement une autre clé ssh.

Supposons que vous ayez un nouveau compte GitHub professionnel, créez-lui une nouvelle clé:

sh-keygen -t rsa -C "email@work_mail.com" -f "id_rsa_work_user1"`

Maintenant vous devriez avoir l'ancien et le nouveau, pour les voir, lancez:

ls -al ~/.ssh

Vous devez exécuter ce qui précède une seule fois.

A partir de maintenant, chaque fois que vous voulez basculer entre les deux, lancez simplement:

ssh-add -D
ssh-add ~/.ssh/id_rsa_work_user1 #make to use this without the suffix .pub

Pour passer à l’ancien, exécutez à nouveau:

 ssh-add -D
 ssh-add ~/.ssh/<previous id_rsa>
0
Kohn1001

vient de comprendre cela pour Windows, en utilisant des informations d'identification pour chaque dépôt:

cd c:\User1\SomeRepo
git config --local credential.https://github.com.user1 user1
git config --local credential.useHttpPath true
git config --local credential.helper manager

Le format des informations d'identification. https://github.com . indique à l'assistant d'informations d'identification l'URL des informations d'identification . Le 'useHttpPath' indique au gestionnaire d'informations d'identification d'utiliser le chemin d'accès à ces informations. Si useHttpPath est omis, le gestionnaire des informations d'identification stockera une information d'identification pour https://github.com . S'il est inclus, le gestionnaire des informations d'identification stockera plusieurs informations d'identification, ce que je voulais vraiment.

0
Craig - MSFT

Si vous avez installé WSL , vous pouvez avoir deux comptes git distincts - un sur WSL et un sur Windows.

0
Almenon