brzmi to bardzo podobnie do mojej obecnej pracy. wygląda na to, że masz już skonfigurowany oddzielny plik, ssh-keys
więc musisz również utworzyć ~/.ssh/config
plik i wypełnić go informacjami podobnymi do tego:
Host work.github.com
HostName github.com
User WORK_GITHUB_USERNAME
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_work_rsa
IdentitiesOnly yes
Host personal.github.com
HostName github.com
User PERSONAL_GITHUB_USERNAME
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_personal_rsa
IdentitiesOnly yes
Każda właściwość wydaje się dość oczywista, ale IdentitiesOnly
jedna. Nie będę próbował wyjaśniać, do czego to służy, ale to jest w mojej obecnej konfiguracji i działa dobrze.
Warto również zauważyć, że Host URL
jest to tylko wskaźnik do przechwytywania prawidłowych ustawień użytkownika i nie ma żadnego wpływu na prawidłowe dostarczenie plików do docelowego HostName
adresu URL.
Teraz musisz tylko upewnić się, że Twój origin
(lub remote
ogólnie) adres URL pasuje do prawidłowego Host
adresu URL w odpowiednich repozytoriach, w zależności od nazwy użytkownika. Jeśli masz już osobiste repozytoria, możesz edytować .git/config
plik tego repozytorium w swoim edytorze tekstu:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@personal.github.com:PERSONAL_GITHUB_USERNAME/project.git
lub zrób to z linii poleceń:
git remote set-url origin git@personal.github.com:PERSONAL_GITHUB_USERNAME/project.git
Podobnie jak w Twojej pracy:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@work.github.com:your_work_organization/project.git
lub znowu, z linii poleceń:
git remote set-url origin git@work.github.com:your_work_organization/project.git
Oczywiście zawsze możesz ustawić jeden ze swoich Host
adresów URL w swoim ~/.ssh/config
pliku jako zwykły
Host github.com
Kiedyś tylko work.github.com
łatwiej było widzieć relacje konfiguracyjne.
Gdy wszystkie te elementy są ustawione, powinieneś być w stanie nacisnąć każdy odpowiedni pilot.
EDYTOWAĆ
Warto zauważyć, że właśnie się przekonałem, że jeśli kiedykolwiek ustawisz globalne wartości konfiguracyjne git dla swojej user.email
wartości (i zgaduję, user.name
że wyśle również inną wartość), git pokaże twoje zatwierdzenia jako ten użytkownik poczty e-mail. Aby obejść ten problem, możesz zastąpić globalne ustawienia konfiguracji git w swoim lokalnym repozytorium:
$ git config user.name "John Doe"
$ git config user.email johndoe@example.com
Powinno to teraz wysyłać zatwierdzenia jako właściwy użytkownik dla tego repozytorium.