Avere più account su GitHub senza impazzire (troppo)

Nelle mie oscillazioni tra ordine maniacale e caos, ci tengo ad avere un po’ di ordine in certe cose: ad esempio negli account su GitHub. Desidero infatti averne due distinti, uno per le mie cose personali e uno per le cose di lavoro. La procedura non è complessa ma va ricordata ad ogni inizializzazione di un nuovo repository (e ad ogni cambio di computer).

Il principio di base è quello di avere sul proprio computer una coppia di chiavi ssh dedicata al lavoro (quindi oltre alla nostra coppia di chiavi ssh id_rsa vorremo creare una coppia id_rsa_lavoro). La chiave dovrà rispondere a un particolare nome host che poi useremo in fase di configurazione di un nuovo repository; inoltre per quel repository dovremo ricordarci di impostare l’email corretta!

Fonti:

Naturalmente in questi esempi lavoro è modificabile con un nome a piacere

1. Configurare una seconda chiave SSH

Questa parte si divide in tre passaggi:

A) creiamo una nuova chiave SSH collegata alla nostra email di lavoro:

ssh-keygen -t rsa -C "email.lavoro@esempio.it"

NB: quando richiesto è necessario fornire un nome differente per la chiave, per non sovrascrivere quella principale; esempio: id_rsa_lavoro (di default scrive in id_rsa)

B) quindi inseriamo la nuova chiave nel nuovo account di GitHub andando in Settings > Keys, New SSH Key e incollando il contenuto della nuova chiave (pubblica!), ad esempio con:

pbcopy < ~/.ssh/id_rsa_lavoro.pub

C) ora prepariamo un file di configurazione per SSH:

# crea un file vuoto nella cartella di SSH
touch ~/.ssh/config

al suo interno inseriamo:

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

# GitHub Lavoro
Host github-lavoro
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_lavoro

in questo modo SSH userà la chiave di lavoro ogni qual volta richiameremo un indirizzo del tipo github-lavoro.

2. Impostare l’email al repository

Immediatamente dopo aver creato il repository bisogna aggiornare l’email del progetto (che altrimenti coinciderà con quella di personale, di default):

git config user.email "email.lavoro@esempio.it"

dato che l’email (e quindi per GitHub l’associazione con l’utente) vien fatta al momento dei commit, è importante impostare l’email di lavoro prima del nostro primo commit.

3. Impostare git remote correttamente

Al momento di associare il nostro repository al repository remoto, anziché dare questo comando:

git remote add origin git@github.com:utente/il-mio-progetto.git

daremo quest’altro comando, usando al posto di github.com il nostro host github-lavoro

git remote add origin git@github-lavoro:utente/il-mio-progetto.git