본문 바로가기

하나의 컴퓨터로 github 계정 여러 개 사용하기

두 개의 github 계정(개인, 회사)을 나눠서 이용하는 방법을 공유합니다.

일단은 셋팅이 하나도 되어 있지 않다는 전제하에 시작하겠습니다.

1. SSH-key 생성 및 등록

$ ssh-keygen -t rsa -b 4096 -C [이메일]
$ ssh-keygen -t rsa -b 4096 -C "dpudpu11@gmail.com"

입력하면 생성하려는 key의 이름 입력이 나오는데 기본값은 id_rsa 입니다. 저는 구분을 짓기 위해서/Users/dpudpu/.ssh/id_rsa_personal 라고 입력하겠습니다.

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/dpudpu/.ssh/id_rsa): /Users/dpudpu/.ssh/id_rsa_personal

같은 방식으로 또 다른 계정의 키를 하나 더 생성합니다. 키의 이름은 id_rsa_compnay 로 하겠습니다.

$ ssh-keygen -t rsa -b 4096 -C "dpudpu@naver.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/dpudpu/.ssh/id_rsa): /Users/dpudpu/.ssh/id_rsa_company

이렇게 하면 ~/.ssh 경로에 총 4개의 파일이 생성되었습니다. 생성된 키를 ssh-add 로 등록합니다.

id_rsa_company.pub   
id_rsa_company      
id_rsa_personal.pub
id_rsa_personal

$ ssh-add id_rsa_personal
$ ssh-add id-rsa_company

2. github에 등록하기

settings -> SSH and GPG keys -> New SSH key 를 들어갑니다

title에는 원하는 이름을
key에는 id_rsa_company.pub 의 키 값을 등록합니다.
키값은 아래의 명령어를 통하여 확인할 수 있습니다. 참고로 키값은 ssh-rsa ~~~로 시작하는 긴 문자열입니다.

$ cat ~/.ssh/id_rsa_company.pub 

같은 방식으로 또 다른 github 계정에 다른 키인 id_rsa_personal.pub 을 등록합니다.

3. ~/.ssh/config 설정

~/.ssh/config 파일을 설정합니다. 없다면 새로 만들어서 하시면 됩니다.

# company
Host company-github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_company

# personal
Host personal-github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_personal

연결이 되는지 ssh -T [host] 로 확인합니다.

$ ssh -T company-github.com
Hi dpudpu! You've successfully authenticated, but GitHub does not provide shell access.

$ ssh -T personal-github.com 
Hi dpudpu-test! You've successfully authenticated, but GitHub does not provide shell access.

4. ~/.gitconfig 설정

~/.gitconfig 에 전역 설정을 하겠습니다.

[user]
  email = dpudpu11@gmail.com
  name = dpudpu
[includeIf "gitdir:~/Develop/company/"]
  path = .gitconfig-company

includeIf~/Develop/company/ 디렉터리 아래 있다면 ~/.gitconfig-compnay 파일을 불러옵니다.

~/.gitconfig-company 파일은 다음과 같습니다.

[user]
  email = dpudpu@naver.com
  name = dpudpu

중요 - email은 github의 email로 해야합니다.
이렇게 설정을 하면 평소에는 user.email에 개인 계정인 dpudpu11@gmail.com 설정값으로 사용하고
~/Develop/company/ 디렉터리에서는 dpudpu@naver.com를 사용하게 됩니다.
출처 : Git 계정 여러 개 동시 사용하기

5. 사용하기

~/Develop/company/ 디렉토리에 git clone으로 리파지토리를 복사한 뒤에 해당 디렉토리에서 git config --list 를 입력하시면 아래와 같은 내용을 보실 수 있습니다.

user.email=dpudpu11@gmail.com
user.name=dpudpu
includeif.gitdir:~/Develop/company/.path=.gitconfig-company
user.email=dpudpu@naver.com
user.name=dpudpu

includeif.gitdir:~/Develop/company/ 조건을 충족하기 때문에 .gitconfig-company 파일을 불러와 user.email을 덮어 씌웁니다.

해당 폴더에서 푸쉬를 하면 github 계정 dpudpu@naver.com 로 push 되고
다른 폴더 ex) ~/Develop/personal 에서 커밋하고 push하면 전역 설정인 dpudpu11@gmail.com 로 push 됩니다.

private repository clone

마지막으로 private repository를 clone을 하는 방법입니다.
git clone [host]:[githubId]/[repository명] [host]는 ~/.ssh/config 에서 설정한 host 입니다.

위의 리파지토리 clone을 하려면 다음 명령어를 입력하면 됩니다.

$ git clone personal-github.com:dpudpu/Study-Git.git 

잘 되지 않는 부분이나 궁금한 부분 있으시면 댓글 남겨주세요.

'Git' 카테고리의 다른 글

2. git init 과 clone  (0) 2018.11.03
1. 맥에서 git 설치 및 초기설정  (0) 2018.11.03