Search

Github 계정 여러개 등록하기 - PAT

PublishDate
2023/05/03
Category
Git
Github
Tag & Keyword
PAT
Multi Account
profile

1. 서론

설정만 빠르게 보고싶다면 3.2. 설정 및 테스트로 고고
회사 컴퓨터에서 회사 Github 계정만 사용하다가 테스트용으로 사용할 개인 Github 계정을 사용할 일이 생겼다.
이전에 [WSL2] Github PAT 저장하기에서 소개했던 방법으로 PAT를 사용하고 있었는데 AWS Profile을 사용하듯이 여러개를 등록해놓고 스위칭하는 방법이 없을까? 라는 생각을 했다.
짧은 결론을 먼저 말하면
하지만 개인적으로 gitconfig를 활용한 설정이 훨씬 깔끔한 것 같다.
대부분 포스팅이 SSH Key를 활용해서 다중 계정 설정을 하는데, 나는 PAT 사용을 선호하기 때문에 이 방법을 찾게됐다.
Git-User-Switch를 아주 간단하게 알아보고, gitconfigincludeIf 옵션을 사용해서 폴더간 계정을 분리하는 방법을 자세히 알아보자

2. git-user를 사용해서 git user switch하기

1.
npm이 없다면 공식 문서를 참고해서 Node.js를 설치하자.
2.
npm을 사용해서 git-user-switch 설치
sudo npm i -g git-user-switch
Shell
복사
3.
git-user 명령어로 사용자를 switch하거나 새로운 사용자를 등록할 수 있다.
git-user-switch 사용 예시

3. .gitconfig 파일을 통해서 경로별 계정 설정

3.1. 시나리오

아래 Tree 구조 처럼 git credential을 분리하길 원한다.
~Code/Personal/** 경로는 개인 계정을 사용하고 나머지 모든 경로에 대해서는 global로 설정한 계정이 사용되도록 설정하기
/mnt/d/Code ├── Git → Default 계정 사용 (회사 계정) ├── Terraform → Default 계정 사용 (회사 계정) ├── Personal → 개인 계정 사용
Shell
복사

3.2. 설정 및 테스트

아쉽게도 [WSL2] Github PAT 저장하기 에서 사용했던 windows의 git-credential-manager는 사용할 수 없는 것 같다. (windows에 계정 2개를 등록할 수 없어서라고 생각중인데, 해결 방법을 아시는 분은 피드백 부탁드려요)
1.
.git-credentials 파일에 계정별로 credential을 등록한다.
# ~/.git-credentials # https://[Username]:[PAT]@github.com https://wwdcr2:[PAT]@github.com https://cloudest:[PAT]@github.com
Shell
복사
2.
Default 계정을 사용하기 위한 .gitconfig 파일 작성
# ~/.gitconfig [user] name = company email = company@company.com [credential] helper = store #helper = /mnt/c/Program\\ Files/Git/mingw64/bin/git-credential-manager.exe ← 이건 아쉽지만 사용하지 못하는 것 같다. store 설정 필수 [includeIf "gitdir:/mnt/d/Code/Personal/"] path = ~/.gitconfig-personal
Shell
복사
[user] : default (global)로 사용할 사용자 name, email을 기입한다.
[credential] : helper = store를 사용한다. 그래야 .git-credentials값을 참조한다.
[includeIf] : gitdir: 에 입력한 경로의 하위 경로에서는 .gitconfig 파일이 아닌 path = 에서 정의한 파일을 config로 설정한다는 뜻이다. (path 마지막이 /로 끝나는지 꼭 확인!) 즉 위 예시에서는 ~/.gitconfig-personal 파일을 바라보게 된다. (path는 작성된 파일 위치 기준 상대경로)
3.
개인계정을 사용하기 위한 .gitconfig-personal 파일 작성
[user] name = personal email = personal@gmail.com [credential] helper = store
Shell
복사
4.
작동 테스트 - git config --get user.name 명령어로 현재 git user 확인
여기선 HT-jwjung이 업무용 계정, wwdcr2가 개인 계정이다.
의도한대로 ~Code/Personal 하위 경로는 모두 개인 계정이 사용되고, 이외의 경로에서는 회사 계정이 사용되는 것을 확인할 수 있다.

4. 결론

이번 포스팅에서는 .git-credentials 파일과 .gitconfig의 includeIf 기능을 이용하여 다중 Github 계정의 PAT를 등록하고 사용하는 방법을 소개했다.
Github 계정 여러개’ 라는 키워드로 구글링을 하면 대부분 SSH Key 방식을 소개 하다보니, 없으면 내가 해보고 포스팅하면 되지 라는 생각으로 작성한 글이다.
이를 통해 더욱 편하게 Github를 활용하면 좋을 것 같다!
+ 참고로 이러한 includeIf.git 이 활성화 된 경로에서만 config 덮어쓰기가 적용된다.