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?
Tout ce que vous avez à faire est de configurer votre configuration SSH avec plusieurs paires de clés SSH.
Ce lien est facile à suivre (merci Eric): http://code.tutsplus.com/tutorials/quick-tip-how-to-work-with-github-and-multiple-accounts--net -22574
Génération de clés SSH (Win/msysgit) https://help.github.com/articles/generating-an-ssh-key/
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.
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]
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/
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
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.
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.
Ouvrez le fichier de configuration et ajoutez les codes ci-dessous. (change selon votre compte)
Compte 1
# account_1
Host gitlab.com-account_1
HostName gitlab.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_account_1
Compte 2
# Account2
Host gitlab.com-Account2
HostName gitlab.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_Account2
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
Compte 1
git remote add Origin [email protected]_1:group_name/repo_name.git
Compte 2
git remote add Origin [email protected]:group_name/repo_name.git
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.
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):
ls -al ~/.ssh
.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.ssh-keygen -t rsa -C "the copied email"
, vous verrez:/.../.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é.ls -al ~/.ssh
à nouveau.pbcopy < ~/.ssh/id_rsa_work.pub
, remplacez id_rsa_work.pub
par ce que vous avez appelé.id_rsa_work
] et accédez à É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.
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
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.
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.
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.
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/
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.
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>
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.
Si vous avez installé WSL , vous pouvez avoir deux comptes git distincts - un sur WSL et un sur Windows.