Avere più account su GitHub senza impazzire (troppo)
6 Aug 2018Nelle 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:
- Quick Tip: How to Work with GitHub and Multiple Accounts di Jeffrey Way, in EnvatoTuts+ (2 novembre 2011)
- Managing Multiple Github Accounts di Michael Herman (16 settembre 2016)
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