회사에서 지급 받은 노트북을 개인 노트북 겸용으로 쓰면서 회사와 개인 github 계정을 한 컴퓨터에서 사용하게 되었습니다. 개인 계정으로 작업하는 레포와, 회사에서 사용하는 레포에 서로 다른 github 계정을 사용해야 하는 상황이 생겼고, 번거로움을 조금 줄이기 위해 갓구글을 통해 배운 내용을 정리해봅니다. 회사 동료들에게도 공유할 매뉴얼 형태로 작성한 내용이라 무미건조한 반말로 적혀있는 점(...) 양해 부탁 드립니다.
macOS BigSur 기준..이라고 하지만 사실 Catalina에서 설정한 내용을 그대로 사용하고 있습니다.
ssh key를 생성하는 방법은 github에서도 안내해주고 있다. Link
1# 키를 등록할 본인 깃헙 계정의 이메일을 적는다. 꼭 그래야 하는지는 확인해보지 못했음2$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
id_rsa_이름
, id_rsa_회사이름
이렇게 만들었다id_rsa_foo
, id_rsa_bar
로 표기한다.1> Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]2# /Users/컴퓨터 계정명/.ssh/id_rsa_myname 이런 식으로 저장했다
1> Enter passphrase (empty for no passphrase): [Type a passphrase]2> Enter same passphrase again: [Type passphrase again]
1#agent 실행2$ eval "$(ssh-agent -s)"3> Agent pid *****45#key 등록67$ ssh-add -K ~/.ssh/id_rsa_foo
id_rsa_foo id_rsa_foo.pub id_rsa_bar id_rsa_foo.pub
SSH and GPG keys
라는 메뉴로 들어간다.1# 에디터로 열어서 공개키의 내용을 복사할 수 있지만 아래와 같이 입력하여 복사할수도 있다.2pbcopy < ~/.ssh/id_rsa_foo.pub
1Host foo-github.com2 HostName github.com3 IdentityFile ~/.ssh/id_rsa_foo4 User blahblahblah #이 키를 등록한 github 계정의 username(이메일이 아님)을 적었다. 아래도 동일56Host bar-github.com7 HostName github.com8 IdentityFile ~/.ssh/id_rsa_bar9 User blahblah
foo-github.com, bar-github.com 이 부분은 본인이 넣고싶은 아무 텍스트나 넣어도 상관이 없다.
1example: git@foo-github.com:foo/foo_repo.git23#새로 클론을 받을 때4git clone git@foo-github.com:foo/foo_repo.git56#기존에 받아서 사용하던 레포의 remote 주소를 바꿀 때7git remote set-url origin git@foo-github.com:foo/foo_repo.git
ssh 키만 등록한다면 권한에 맞는 키가 알아서 사용되겠지만 gitconfig가 분리되지 않아서 커밋하거나 할 때 올바른 메일 주소와 이름이 들어가지 않을 수 있다. 그걸 해결하기 위한 작업. 저장소별 로컬 config를 매번 지정해주는 것도 가능하지만, 작업 흐름상 새로 클론아서 작업하거나 하면 잊고 작업하는 경우가 많다.
1# ~/.gitconfig 파일의 내용2# 여기에 명시된 user 정보를 기본으로 사용하지만3# ~/YourWorkingDirectory/ 경로에서 작업한다면 .gitconfig-working이라는 파일을 추가로 include 하겠다는 내용이다.45[user]6 name = myName7 email = my@email.com8[includeIf "gitdir:~/YourWorkingDirectory/"]9 path = .gitconfig-working
1# ~/.gitconfig-working 파일2# gitconfig의 세팅이 모두 유지되면서 겹치는 내용만 덮어씌워지게 된다.3[user]4 name = myName5 email = workingMail@email.com