web-dev-qa-db-fra.com

Basculer entre les identités d'utilisateur dans un Git sur un ordinateur

J'ai UN référentiel sur GitHub, appelons-le Repo-1.

Je souhaite d’abord accéder à ce référentiel en tant que tilisateur Git par défaut.

Appelons cet utilisateur User-1.

J'ai créé paire de clés SSH, tout va bien, fonctionne bien.


J'ai fait UN AUTRE référentiel sur GitHub, appelons-le Repo-2.

Je n'a apporté aucune modification dans Git local, sur mon ordinateur portable. Pas de changement de configuration, rien.

Maintenant - je veux cloner à partir de Repo-1 En tant que User-2 (Mais à partir du même ordinateur portable).

Tout d’abord: est-ce possible de le faire?

Un Git local sur un seul ordinateur portable peut-il basculer entre les "comptes d’utilisateur" et se présenter sous la forme User-2? Et ensuite, à partir de CET identité, clonez à partir de Repo-1, effectuez un changement, puis appuyez sur Repo-1?

Si possible, comment je fais ça?

79
Martin

Vous avez votre .gitconfig global où vous avez déjà configuré vos clés SSH/informations utilisateur. Le fichier global .gitconfig est remplacé par un fichier gitconfig local - le fichier "config" de votre dossier .git (s'il n'existe pas, vous devrez peut-être le créer).

Par exemple, vous pouvez copier le fichier .gitconfig dans le dossier .git (et le renommer "config") et simplement modifier les lignes à modifier (probablement github.user et github.token) ou créer un nouveau fichier les deux lignes en elle.

Si vous préférez la ligne de commande "git config", vous pouvez éviter tout déplacement de fichier en omettant l'option "--global".

74
Moe

Vous devez déterminer si vous avez réellement deux paires de clés ssh ou seulement deux courriels que vous souhaitez utiliser. Une paire de clés ssh est liée aux comptes comme décrit ici .

La paire de clés ssh (en particulier la clé privée) donne essentiellement à votre client git la permission de se connecter à github, et donc à Push. Ceci est distinct de l'identité de l'utilisateur, qui est simplement le courrier électronique dans vos messages de validation.

Si vous avez deux paires de clés SSH, chacune liée à un compte, suivez les instructions ces pour créer un fichier ~/.ssh/config. L’essentiel est d’utiliser un ssh psuedo-Host différent pour chaque compte:

# Default GitHub user (joe)
Host github.com
  HostName github.com
  User git
  IdentityFile /Users/joe/.ssh/id_rsa

# Client user (client)
Host github-client
  HostName github.com
  User git
  IdentityFile /Users/joe/.ssh/id_rsa_client

Vous utilisez ensuite deux télécommandes correspondantes:

git clone [email protected]:joe/my_repo.git

et

git clone git@github-client:client/his_repo.git

Si vous voulez simplement utiliser deux courriels, vous pouvez simplement donner à chaque clone un .git/config Séparé avec les paramètres [user] Désirés.

52
Matthew Flaschen