Ein Befehl Github Accounts wechseln
Diese Lösung hat die Form eines einzelnen Git-Alias. Nach der Ausführung wird der aktuelle Projektbenutzer einem anderen Konto zugeordnet
Generieren Sie SSH-Schlüssel
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'
Verknüpfen Sie sie mit Ihren GitHub / Bitbucket-Konten
- Kopieren Sie den öffentlichen Standardschlüssel
pbcopy < ~/.ssh/id_rsa.pub
- Melden Sie sich bei Ihrem GitHub-Konto an
add SSH key
Fügen Sie den Schlüssel in die Github-Seite ein
- Kopieren Sie einen anderen öffentlichen Schlüssel
pbcopy < ~/.ssh/id_rsa_pro.pub
- Wiederholen und passen Sie die Schritte 2 bis 4 für jedes andere Konto an
Schritt 1. Automatische Umschaltung der SSH-Taste.
Wir können konfigurieren ssh
, um eine Verwendung eines bestimmten Verschlüsselungsschlüssels abhängig von der zu senden host
. Das Schöne ist, dass Sie mehrere Aliase für dasselbe haben können hostname
.
Siehe diese Beispieldatei ~/.ssh/config
:
# 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
Git Remote-Konfiguration
Sie können nun diese Aliase in den git - Fernbedienungen verwenden , indem git@github.com
durch git@github_pro
.
Sie können entweder Ihre vorhandenen Projektfernbedienungen ändern (mit etwas wie git remote set-url origin git@github_pro:foo/bar.git
) oder sie direkt beim Klonen anpassen.
git clone git@github.com:ArnaudRinquin/atom-zentabs.git
Mit Alias wird es:
git clone git@github_pro:ArnaudRinquin/atom-zentabs.git
Schritt 2. Ändern der git user.email
Die Git-Konfigurationseinstellungen können global oder pro Projekt sein. In unserem Fall möchten wir eine pro Projekt Einstellungen. Es ist sehr einfach, es zu ändern:
git config user.email 'arnaud.rinquin@wopata.com'
Das ist zwar einfach, aber für die Entwickler, die wir sind, dauert es viel zu lange. Wir können dafür einen sehr einfachen Git-Alias schreiben.
Wir werden es der ~/.gitconfig
Datei hinzufügen .
[user]
name = Arnaud Rinquin
email = rinquin.arnaud@gmail.com
...
[alias]
setpromail = "config user.email 'arnaud.rinquin@wopata.com'"
Dann müssen wir nur git setpromail
noch unsere E-Mail-Adresse für dieses Projekt ändern.
Schritt 3. Ein Befehlsschalter bitte?!
Wäre es nicht schön, mit einem einzigen Befehl ohne Parameter von einem Standardkonto zu einem angegebenen Konto zu wechseln? Das ist definitiv möglich. Dieser Befehl besteht aus zwei Schritten:
- Ändern Sie die aktuellen Projektfernbedienungen in die ausgewählten Aliase
- Ändern Sie die aktuelle Projektbenutzer-E-Mail-Konfiguration
Wir haben bereits eine Ein-Befehl-Lösung für den zweiten Schritt, aber der erste ist viel schwieriger. Ein Befehl Remote Host ändern
Hier kommt die Lösung in Form eines weiteren Git-Alias-Befehls, den Sie zu Ihrem hinzufügen können ~/.gitconfig
:
[alias]
changeremotehost = !sh -c \"git remote -v | grep '$1.*fetch' | sed s/..fetch.// | sed s/$1/$2/ | xargs git remote set-url\"
Dies ermöglicht das Ändern aller Fernbedienungen von einem Host auf einen anderen (den Alias). Siehe das Beispiel:
$ > 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)
Kombiniere sie alle
Wir müssen jetzt nur noch die beiden Befehle zu einem kombinieren, das ist ganz einfach. Sehen Sie, wie ich auch Bitbucket-Host-Switching integriere.
[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\"
Quelllink-Tutorial