이것은 나의 현재 작업 설정과 매우 유사하게 들립니다. 이미 별도 ssh-keys
의 ~/.ssh/config
파일 을 설정 한 것 같으므로 파일 을 만들고 다음과 유사한 정보로 채워야합니다.
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
모든 속성은 매우 자명하지만 IdentitiesOnly
하나입니다. 나는 그것이 무엇을위한 것인지 설명하려고하지 않을 것이지만 그것은 나의 현재 설정에 있고 잘 작동합니다.
Host URL
은 올바른 사용자 설정을 가져 오기위한 포인터 일 뿐이며 파일을 대상 HostName
URL로 올바르게 가져 오는 데 아무런 영향을 미치지 않는다는 점도 주목할 가치가 있습니다 .
이제 귀하의 origin
(또는 remote
일반적으로) URL이 Host
사용자 이름에 따라 각 저장소 의 올바른 URL 과 일치 하는지 확인하기 만하면 됩니다. 기존 개인 저장소가 이미있는 경우 .git/config
텍스트 편집기에서 해당 저장소의 파일을 편집 할 수 있습니다 .
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@personal.github.com:PERSONAL_GITHUB_USERNAME/project.git
또는 명령 줄을 통해 수행하십시오.
git remote set-url origin git@personal.github.com:PERSONAL_GITHUB_USERNAME/project.git
당신의 일과 마찬가지로 :
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@work.github.com:your_work_organization/project.git
또는 다시 명령 줄을 통해 :
git remote set-url origin git@work.github.com:your_work_organization/project.git
물론 파일 의 Host
URL 중 하나를~/.ssh/config
Host github.com
work.github.com
구성 관계를 더 쉽게 볼 수만 있었습니다.
모든 설정이 완료되면 각 리모컨으로 푸시 할 수 있습니다.
편집하다
내가 방금 알아 낸 한 가지 주목할 점은 값에 대해 전역 git 구성 값을 설정 한 경우 user.email
(그리고 user.name
다른 값도 보낼 것이라고 생각 합니다) git은 해당 이메일 사용자로 커밋을 표시한다는 것입니다. 이 문제를 해결하기 위해 로컬 저장소 내에서 전역 git 구성 설정을 재정의 할 수 있습니다.
$ git config user.name "John Doe"
$ git config user.email johndoe@example.com
이제 해당 저장소에 대한 올바른 사용자로 커밋을 보내야합니다.