Jedno polecenie przełącza konta github
To rozwiązanie ma postać pojedynczego aliasu git. Po wykonaniu bieżący użytkownik projektu zostanie przyłączony do innego konta
Wygeneruj klucze 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'
Połącz je ze swoimi kontami GitHub / Bitbucket
- skopiuj domyślny klucz publiczny
pbcopy < ~/.ssh/id_rsa.pub
- zaloguj się do konta GitHub
- wklej klucz na
add SSH key
stronie github
- skopiuj inny klucz publiczny
pbcopy < ~/.ssh/id_rsa_pro.pub
- powtórz i dostosuj kroki od 2 do 4 dla każdego innego konta
Krok 1. Automatyczne przełączanie klucza ssh.
Możemy skonfigurować ssh
wysyłanie użycia określonego klucza szyfrowania w zależności od host
. Fajną rzeczą jest to, że możesz mieć kilka aliasów dla tego samegohostname
.
Zobacz ten przykładowy ~/.ssh/config
plik:
# 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
zdalna konfiguracja git
Możesz teraz używać tych aliasów w pilotach git, zmieniając git@github.com
według git@github_pro
.
Możesz zmienić istniejące piloty projektów (używając czegoś podobnego git remote set-url origin git@github_pro:foo/bar.git
) lub dostosować je bezpośrednio podczas klonowania.
git clone git@github.com:ArnaudRinquin/atom-zentabs.git
przy użyciu aliasu staje się:
git clone git@github_pro:ArnaudRinquin/atom-zentabs.git
Krok 2. Zmiana adresu e-mail git user.email
Ustawienia konfiguracji Git mogą być globalne lub dla jednego projektu. W naszym przypadku chcemy ustawienia dla każdego projektu. Bardzo łatwo to zmienić:
git config user.email 'arnaud.rinquin@wopata.com'
Choć jest to łatwe, trzeba długo czekać na to, kim jesteśmy programiści. Możemy do tego napisać bardzo prosty alias git.
Dodamy go do ~/.gitconfig
pliku.
[user]
name = Arnaud Rinquin
email = rinquin.arnaud@gmail.com
...
[alias]
setpromail = "config user.email 'arnaud.rinquin@wopata.com'"
Następnie git setpromail
wystarczy zmienić adres e-mail tylko dla tego projektu.
Krok 3. Jeden przełącznik poleceń, proszę ?!
Czy nie byłoby miło przejść z domyślnego konta na określone za pomocą pojedynczego polecenia bez parametrów? Jest to zdecydowanie możliwe. To polecenie będzie miało dwa kroki:
- zmień obecne piloty projektu na wybrane aliasy
- zmień bieżącą konfigurację projektu user.email
Mamy już jedno rozwiązanie dla drugiego kroku, ale pierwsze jest o wiele trudniejsze. Zmiana zdalnego hosta za pomocą jednego polecenia
Oto rozwiązanie w postaci innego polecenia aliasu git, które można dodać do ~/.gitconfig
:
[alias]
changeremotehost = !sh -c \"git remote -v | grep '$1.*fetch' | sed s/..fetch.// | sed s/$1/$2/ | xargs git remote set-url\"
Umożliwia to zmianę wszystkich pilotów z jednego hosta na inny (alias). Zobacz przykład:
$ > 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)
Połącz je wszystkie
Teraz musimy tylko połączyć dwa polecenia w jedno, jest to dość łatwe. Zobacz, jak integruję przełączanie hostów 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\"
Link do źródła - samouczek