[Github] SSH 를 활용하여 git 계정 여러개 사용하기 (Windows)

Yuri Lee·2020년 12월 10일
1
post-thumbnail

서론

학부 시절부터 사용했던 github 계정이 있다. 이 계정을 통해서 개인 프로젝트를 관리해왔다. 요근래 회사에서 프로젝트를 진행하며서 git 계정을 사용하는 일이 있었다. 그 과정에서 개인 프로젝트와 회사 프로젝트를 분리하고 싶다는 생각이 들었다. 특히 컨트리뷰션 그래프에서 구분도 못하고.. 😔😔 가장 큰 이유는 개인적인 공부와 회사는 별개라고 생각해서... Anyway! 회사용 github 계정을 추가하기로 결심했다.

pc 환경: windows 10

GitHub 계정 분리하기

회사 이메일을 통해 github에 가입해줬다.

SSH 키 분리

회사 계정에서 사용할 ssh 키를 생성해야 한다.

ssh-keygen -t rsa -C [comment] -f [filename]

나는 개인용으로 id_rsa / 회사용으로 id_rsa_work 을 생성했다. 그러면 filename, filename.pub 파일 2개가 생성된다. 즉 총 4개의 파일을 볼 수 있다. 이 중 public key인 filename.pub 파일의 내용을 Github에 등록한다.

즉 개인 계정에서 id_rsa.pub 를 등록하고, 회사 계정에서는 id_rsa_work.pub 를 등록하면 된다. 이 ssh 키는 config 파일에서 호스트 별로 관리할 수 있다. 이 파일이 없을 경우 만들어주면 된다. ~/.ssh/config 파일을 생성하여 다음과 같이 작성한다.

# Default GitHub
Host github.com
 HostName github.com
 IdentityFile  ~/.ssh/id_rsa
 User git


# work 
Host github.com-work
   HostName github.com  
   IdentityFile ~/.ssh/id_rsa_work
   User git  

호스트가 github.com-work 로 되어있으면 실제 호스트는 github.com 를 사용하고 ssh key 파일은 /.ssh/id_rsa_work를 사용하라는 뜻이다.

Git local config 수정하기

프로젝트를 실행할 때마다 Git local config 수정하면서 계정을 바꿔줄 수 있다.

git config --local user.name "sample-work"
git config --local user.email "sample-work@gmail.com"

이렇게 해주면 프로젝트 폴더별로 계정을 다르게 사용할 수 있지만 매우 귀찮은 작업이다 ... 😞

IncludeIf 를 이용해 이메일 주소 분리

커밋할 때 사용하는 이메일 주소는 ~/.gitconfig 파일에 전역으로 설정해 놓고 사용하는 것이 보통이다. 윈도우는 .gitconfig 파일이 C:\Users\{username}\ 경로에 위치해있다.

여기서 주목! 😎 .gitconfig에 설정하는 include와 includeIf 섹션을 원하는 설정 파일을 추가로 불러오게 할 수 있다.

.gitconfig

[user]
	email = sample@gmail.com
	name = sample
[includeIf "gitdir:D:/company-project/"]
  path = .gitconfig-work

나는 회사 프로젝트를 D드라이브의 company-project 폴더 내에서 관리해주고 싶어서 다음과 같이 경로를 지정하였다. 그리고 추가로 C:\Users\{username}\ 에 .gitconfig-work 파일을 생성한다.

.gitconfig-work

[user]
  email = sample-work@gmail.com
  name = sample-work

주의해야 할 점

지정한 D:/company-project/ 경로로 들어오고, 해당 경로에서의 git config를 확인하면 leyuri(개인계정)이 나온다. 그리고 그 경로 안에 만들어 놓은 sample-work-test 폴더로 들어간다. 이 폴더 내에서 역시 git config가 leyuri 였다. 내가 설정한 회사 git 계정이 나와야 하는데 개인 계정 이름이 나와서 의문이였다. 🤔 그래서 구글링 ㄱㄱ

알고보니 먼저 gitn init 설정을 해줘야 했었다. (https://stackoverflow.com/questions/43919191/git-2-13-conditional-config-on-windows) init 이후에는 회사 git 계정 이름이 잘 출력되었다.

  • git init을 해야 적용이 된다.
  • ssh 이용해서 가능, host github.com-work 입력해줘야 함
    • git remote add origin git@github.com-work:username/sample-work-test.git

결론

하루 내내 시도했는데 안돼서 고생했는데.... 드디어 해결해서 너무 기분이 좋다! 😉💜💜


출처
https://stackoverflow.com/questions/43919191/git-2-13-conditional-config-on-windows
https://blog.outsider.ne.kr/1448
https://monkey3199.github.io/develop/etc/2018/11/15/git_ssh_multi_user.html
https://blog.doitreviews.com/development/2020-08-08-git-account-setting/

profile
Step by step goes a long way ✨

1개의 댓글

comment-user-thumbnail
2021년 8월 12일

헙 … ㅠ 저도 계속 같은 이름이 나와서 헤맸는데 이 글 보고 해결했어요 ㅠ 너무 감사합니다

답글 달기