개인 이메일로 업무 코드를 푸시하지 마세요: Windows에서 여러 GitHub 계정 사용을 위한 궁극적인 가이드
Source: Dev.to
개념: SSH 키와 별칭
Git은 기본적으로 하나의 전역 사용자를 사용합니다. 계정을 전환하려면 다음이 필요합니다:
- 두 개의 별도 SSH 키(하나는 개인용, 하나는 업무용).
- 별칭(예:
github-work)을 적절한 키에 매핑하는 SSH 설정 파일.
Step 1: 고유 SSH 키 생성
# Create the .ssh directory if it doesn't exist
mkdir "$HOME\.ssh"
cd "$HOME\.ssh"
개인 키
ssh-keygen -t ed25519 -C "personal@gmail.com" -f id_personal
업무 키
ssh-keygen -t ed25519 -C "work@company.com" -f id_work
Note: 기존 기본 키(
id_rsa)를 덮어쓰지 마세요.
Step 2: “Eval” 문제 (Windows 해결책)
일반적인 eval $(ssh-agent -s) 명령은 PowerShell에서 종종 실패합니다. 대신 Windows에 내장된 ssh-agent 서비스를 활성화하여 재부팅 후에도 유지되도록 합니다.
# Run PowerShell as Administrator
Get-Service -Name ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
키를 추가합니다(일반 PowerShell 창에서도 가능):
ssh-add $HOME\.ssh\id_personal
ssh-add $HOME\.ssh\id_work
두 키가 모두 로드됐는지 확인합니다:
ssh-add -l
Step 3: 키를 GitHub에 업로드
- 개인 공개 키 파일(
id_personal.pub)을 열고 내용을 복사합니다. - GitHub → Settings → SSH and GPG keys에서 New SSH key를 클릭하고 키를 붙여넣은 뒤 저장합니다.
- 회사 GitHub 계정에서도 업무 공개 키(
id_work.pub)에 대해 동일한 과정을 반복합니다.
Step 4: 마법의 설정 파일
$HOME\.ssh\ 안에 확장자 없이 config 라는 파일을 만들고 다음 내용을 넣습니다:
# Personal Account – Default
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_personal
# Work Account – Alias
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_work
Step 5: 저장소 클론 및 설정
-
개인 프로젝트: 평소와 같이 클론합니다.
git clone git@github.com:username/repo.git -
업무 프로젝트:
github.com대신 별칭github-work를 사용합니다.git clone git@github-work:company/repo.git
로컬 아이덴티티 설정
업무 저장소를 클론한 직후, 잘못된 이메일로 커밋되는 것을 방지하기 위해 로컬 Git 아이덴티티를 설정합니다:
git config user.name "Your Work Name"
git config user.email "work@company.com"
보너스: 잘못된 이메일로 푸시된 커밋 수정하기
이미 개인 이메일이 포함된 커밋을 푸시했다면, 저장소를 삭제하지 않고도 재작성할 수 있습니다.
-
로컬 Git 설정을 업데이트합니다(아직 설정되지 않았다면):
git config user.email "work@company.com" -
마지막 커밋을 수정하여 작성자 정보를 재설정합니다:
git commit --amend --reset-author --no-edit -
수정된 커밋을 강제 푸시합니다:
git push -f origin main
결론
Windows에서 여러 GitHub 계정을 설정하는 데는 약 10분 정도면 충분하지만, 끊임없는 “Permission denied” 오류와 신원 혼동이라는 곤란을 피할 수 있습니다. ssh-agent 서비스와 SSH 설정 파일만 제대로 구성하면 모든 것이 배경에서 매끄럽게 작동합니다.
행복한 코딩 되세요! 🚀