brzmi to bardzo podobnie do mojej obecnej pracy. wygląda na to, że masz już skonfigurowany oddzielny plik, ssh-keyswięc musisz również utworzyć ~/.ssh/configplik 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 IdentitiesOnlyjedna. 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 URLjest 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 HostNameadresu URL.
Teraz musisz tylko upewnić się, że Twój origin(lub remoteogólnie) adres URL pasuje do prawidłowego Hostadresu URL w odpowiednich repozytoriach, w zależności od nazwy użytkownika. Jeśli masz już osobiste repozytoria, możesz edytować .git/configplik 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 Hostadresów URL w swoim ~/.ssh/configpliku 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.emailwartoś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.