Commutateur de comptes github à une commande
Cette solution prend la forme d'un seul alias git. Une fois exécuté, l'utilisateur actuel du projet sera rattaché à un autre compte
Générer des clés ssh
ssh-keygen -t rsa -C "rinquin.arnaud@gmail.com" -f '/Users/arnaudrinquin/.ssh/id_rsa'
[...]
ssh-keygen -t rsa -C "arnaud.rinquin@wopata.com" -f '/Users/arnaudrinquin/.ssh/id_rsa_pro'
Liez-les à vos comptes GitHub / Bitbucket
- copier la clé publique par défaut
pbcopy < ~/.ssh/id_rsa.pub
- connectez-vous à votre compte GitHub
- collez la clé dans la
add SSH key
page github
- copier une autre clé publique
pbcopy < ~/.ssh/id_rsa_pro.pub
- répétez et adaptez les étapes 2 à 4 pour tous les autres comptes
Étape 1. Commutation automatique des touches ssh.
Nous pouvons configurer ssh
pour envoyer une utilisation une clé de cryptage spécifique en fonction de la host
. La bonne chose est que vous pouvez avoir plusieurs alias pour le même hostname
.
Voir cet exemple de ~/.ssh/config
fichier:
# Default GitHub
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
# Professional github alias
Host github_pro
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_pro
configuration à distance git
Vous pouvez maintenant utiliser ces alias dans les télécommandes git en changeant git@github.com
par git@github_pro
.
Vous pouvez soit modifier vos télécommandes de projets existants (en utilisant quelque chose comme git remote set-url origin git@github_pro:foo/bar.git
), soit les adapter directement lors du clonage.
git clone git@github.com:ArnaudRinquin/atom-zentabs.git
en utilisant un alias, il devient:
git clone git@github_pro:ArnaudRinquin/atom-zentabs.git
Étape 2. Changer git user.email
Les paramètres de configuration de Git peuvent être globaux ou par projet. Dans notre cas, nous voulons un paramètre par projet. Il est très facile de le changer:
git config user.email 'arnaud.rinquin@wopata.com'
Bien que cela soit facile, cela prend beaucoup de temps aux développeurs que nous sommes. Nous pouvons écrire un alias git très simple pour cela.
Nous allons l'ajouter au ~/.gitconfig
fichier.
[user]
name = Arnaud Rinquin
email = rinquin.arnaud@gmail.com
...
[alias]
setpromail = "config user.email 'arnaud.rinquin@wopata.com'"
Ensuite, tout ce que nous avons à faire est git setpromail
de faire changer notre email pour ce projet uniquement.
Étape 3. Un commutateur de commande s'il vous plaît?!
Ne serait-il pas agréable de passer d'un compte par défaut à un compte spécifié avec une seule commande sans paramètre? C'est certainement possible. Cette commande comportera deux étapes:
- changer les télécommandes du projet en cours aux alias choisis
- modifier la configuration actuelle du projet user.email
Nous avons déjà une solution à commande unique pour la deuxième étape, mais la première est beaucoup plus difficile. Changement d'hôte distant à une commande
Voici la solution sous la forme d'une autre commande d'alias git à ajouter à votre ~/.gitconfig
:
[alias]
changeremotehost = !sh -c \"git remote -v | grep '$1.*fetch' | sed s/..fetch.// | sed s/$1/$2/ | xargs git remote set-url\"
Cela permet de changer toutes les télécommandes d'un hôte à un autre (l'alias). Voir l'exemple:
$ > git remote -v
origin git@github.com:ArnaudRinquin/arnaudrinquin.github.io.git (fetch)
origin git@github.com:ArnaudRinquin/arnaudrinquin.github.io.git (push)
$ > git changeremotehost github.com github_pro
$ > git remote -v
origin git@github_pro:ArnaudRinquin/arnaudrinquin.github.io.git (fetch)
origin git@github_pro:ArnaudRinquin/arnaudrinquin.github.io.git (push)
Combinez-les tous
Il ne nous reste plus qu'à combiner les deux commandes en une seule, c'est assez simple. Découvrez comment j'intègre également la commutation d'hôte bitbucket.
[alias]
changeremotehost = !sh -c \"git remote -v | grep '$1.*fetch' | sed s/..fetch.// | sed s/$1/$2/ | xargs git remote set-url\"
setpromail = "config user.email 'arnaud.rinquin@wopata.com'"
gopro = !sh -c \"git changeremotehost github.com github_pro && git changeremotehost bitbucket.com bitbucket_pro && git setpromail\"
Lien source - Tutoriel