W tym wpisie pokażę Ci jak korzystać z wielu kont Gita na jednym komputerze.
Początkowa konfiguracja wymaga kilku kroków, ale później korzystanie z wielu kont staje się transparentne.
1. Zacznij od pliku ~/.gitconfig
.
W tym miejscu definiujesz w jakich katalogach, chcesz korzystać, z której konfiguracji.
Przykładowo załóżmy, iż masz dwa konta:
- do pracy z projektami
apache
- w katalogu~/git/apache
, - z projektami prywatnymi - w katalogu
~/git/darek1024
.
Wypełnij wtedy plik ~/.gitconfig
jak poniżej.
[includeIf "gitdir:~/git/apache/"]
path = ~/git/apache/.gitconfig
[includeIf "gitdir:~/git/darek1024/"]
path = ~/git/darek1024/.gitconfig
2. Dedykowane pliki .gitconfig
dla wszystkich konta.
Teraz utwórz wskazane w powyższej konfiguracji pliki .gitconfig
.
~/git/apache/.gitconfig
z Twoim kontem używanym dla projektów Apache.
[user]
email = dmydlarz@apache.org
name = Darek
Mydlarz
~/git/darek1024/.gitconfig
z kontem używanym dla Twoich prywatnych projektów.
[user]
email = darek1024@gmail.com
name = Darek
Mydlarz
Brawo. Połowa sukcesu za nami.
Możesz już korzystać z konfiguracji różnych kont w różnych katalogach, ale to tylko połowa sukcesu.
To, co chcemy osiągnąć, to automatyczne uwierzytelnianie Ciebie w zależności od katalogu, w którym pracujesz.
3. Wygeneruj osobne klucze dla obu kont
Będziemy potrzebować osobnych kluczy SSH, które umieścisz na serwerze Gita - np. GitHubie we właściwym koncie.
Aby wygenerować dwie osobne pary kluczy, odpal poniższe komendy.
Przełącznik -f
pozwala zdefiniować Ci nazwę pliku, który się wygeneruje.
❯ ssh-keygen -t rsa -C
"dmydlarz@apache.org"
❯ ssh-keygen -t rsa -C
"darek1024@gmail.com"
-f github-darek1024
4. Sprawdź strukturę folderu .ssh
W efekcie, powinieneś widzieć następujące pliki w katalogu ~/.ssh
.
❯ ls ~/.ssh
config github-darek1024.pub github-darek1024 id_rsa.pub id_rsa
Zwróć uwagę na pary plików:
id_rsa
- dla kontadmydlarz@apache.org
github-darek1024
- dla kontadarek1024@gmail.com
Teraz musisz wykorzystać je w pliku ~/.ssh/config
5. Konfiguracja w pliku .ssh/config
W tym miejscu definiujesz, które klucze mają być wykorzystywane dla jakich hostów.
- klucz
id_rsa
dla hostagithub.com-apache
, - klucz
github-darek1024
dla hostagithub.com-darek1024
.
❯ cat ~/.ssh/config
# Apache (dmydlarz@apache.org) account
Host github.com-apache
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
# Personal (darek1024@gmail.com) account
Host github.com-darek1024
HostName github.com
User git
IdentityFile ~/.ssh/github-darek1024
Za chwilę wyjaśni się jak z tych hostów korzystać. 👇
6. Walidacja konfiguracji dla konta darek1024@gmail.com
.
Aby pobrać projekt dla konta darek1024@gmail.com
przy klonowaniu podaj jako host github.com-darek1024
.
Na przykład: git@github.com-darek1024:sztukakodu/code-examples.git
$ git clone git@github.com-darek1024:sztukakodu/code-examples.git
# ^^^^^^^^^^ - extra suffix
Wystarczy zawołać to raz, przy klonowaniu projektu.
Potem korzystasz już normalnie z komend push
, pull
i commit
.
7. Korzystanie z konta dmydlarz@apache.org
Tutaj możemy korzystać na dwa sposoby.
- Klonując projekt i podając host
github.com-apache
$ git clone git@github.com-apache:apache/kafka.git
- Lub podając domyślnego hosta.
$ git clone git@github.com:apache/kafka.git
Sposób nr 2 zadziała dlatego, iż wykorzystany zostanie domyślny plik id_rsa
.
To wszystko.
Daj znać, czy udało Ci się odpowiednio skonfigurować kilka kont na swojej maszynie i czy korzystasz już z tego sposobu.
Pozdrawiam!