Mac 한 대로 GitHub 계정 두 개 쓰기 — SSH 설정부터 push까지

회사 프로젝트에서 작업하다 개인 레포에 push했더니 회사 계정으로 커밋이 찍혔다. GitHub 계정이 두 개라도 아무 설정 없이 쓰면 글로벌 설정 하나로만 동작한다. SSH 키 분리와 gitconfig 분기, 이 두 가지만 잡으면 된다

왜 이 설정이 필요한가

GitHub 계정이 두 개면 — 예를 들어 개인 계정(xxxx@gmail.com)과 회사 계정(yyyy@company.com) — 두 가지 문제가 생긴다

  • 첫째, 커밋 작성자가 하나로 고정된다. 글로벌 gitconfig에 설정된 이름·이메일이 모든 프로젝트에 찍힌다.
  • 둘째, push 권한 오류가 난다. SSH 키가 하나뿐이면 개인 레포에 접근할 수 없다.

해결 방법은 두 가지다

  • SSH 키 분리 — 계정마다 다른 키를 사용
  • gitconfig 분기 — 폴더 경로에 따라 커밋 작성자를 자동 전환

전체 흐름

[1] 개인용 SSH 키 생성
[2] GitHub 개인 계정에 공개 키 등록
[3] ~/.ssh/config 에 Host alias 추가
[4] ~/.gitconfig 에 includeIf 추가
[5] 새 프로젝트에서 remote URL alias 사용

SSH 키 생성

회사 계정 SSH 키가 이미 있다면 건드리지 않는다. 개인 계정용 키만 새로 만든다

ssh-keygen -t ed25519 -C "xxxx@gmail.com" -f ~/.ssh/id_ed25519_personal

passphrase는 Enter 두 번으로 건너뛴다

생성 확인

ls ~/.ssh/
# id_ed25519_personal      ← 개인 키 (공유 금지)
# id_ed25519_personal.pub  ← 공개 키 (GitHub에 등록할 것)

GitHub 개인 계정에 공개 키 등록

공개 키 내용을 복사한다

cat ~/.ssh/id_ed25519_personal.pub
# ssh-ed25519 AAAA... 로 시작하는 한 줄이 출력된다

개인 GitHub 계정으로 로그인한 뒤

  1. Settings → SSH and GPG keys → New SSH key
  2. Title: personal-mac (구분 가능한 이름)
  3. Key type: Authentication Key
  4. Key: 복사한 공개 키 붙여넣기
  5. Add SSH key 클릭

주의: 공개 키를 잘못된 계정에 등록하면 인증은 되지만 엉뚱한 계정으로 연결된다. 개인 이메일로 로그인했는지 먼저 확인한다.

SSH Config 설정

nano ~/.ssh/config

아래 내용을 입력한다.

# 개인 계정
Host github-personal
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_personal

# 회사 계정 (파일명은 실제 파일에 맞게 수정)
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519

저장: Ctrl+XYEnter

연결 테스트

ssh -T git@github-personal
# → Hi xxxx! You've successfully authenticated

ssh -T git@github.com
# → Hi yyyy! You've successfully authenticated

두 계정 모두 확인되면 다음으로 넘어간다

gitconfig 계정 분기 설정

커밋 작성자를 폴더 경로에 따라 자동으로 전환하는 설정이다

개인용 gitconfig 파일 생성

nano ~/.gitconfig-personal
[user]
  name = xxxx
  email = xxxx@gmail.com

글로벌 gitconfig에 includeIf 추가

nano ~/.gitconfig

파일 맨 아래에 추가한다

[includeIf "gitdir:~/personal/"]
  path = ~/.gitconfig-personal

~/personal/ 폴더 안에서는 개인 계정이, 그 외에서는 글로벌(회사) 계정이 자동 적용된다

확인

cd ~/personal
git config user.email
# → xxxx@gmail.com ✅

cd ~
git config user.email
# → yyyy@company.com ✅

특정 프로젝트에만 개인 계정 지정 (선택)

~/personal/ 밖에 있는 프로젝트를 개인 계정으로 push해야 할 때는 로컬 설정을 직접 지정한다

cd ~/workplace/claude-code-mastery
git config user.name "xxxx"
git config user.email "xxxx@gmail.com"

git config user.email
# → xxxx@gmail.com ✅

이 설정은 해당 프로젝트의 .git/config에만 저장되며, 다른 프로젝트에는 영향을 주지 않는다

우선순위 (높은 순)

로컬 설정 (git config user.email)
↓
includeIf (~/personal/ 폴더)
↓
글로벌 설정 (회사 계정, 기본값)

새 프로젝트를 개인 계정으로 push하는 전체 흐름

# 1. 프로젝트 폴더로 이동
cd ~/workplace/claude-code-mastery

# 2. git 초기화 (.git이 없을 때만)
git init

# 3. 개인 계정 지정 (git init 이후에 실행)
git config user.name "xxxx"
git config user.email "xxxx@gmail.com"

# 4. 첫 커밋
git add .
git commit -m "first commit"

# 5. remote 추가 — github.com 대신 github-personal alias 사용
git remote add origin git@github-personal:xxxx/claude-code-mastery.git

# 6. push
git branch -M main
git push -u origin main

GitHub에서 안내하는 기본 URL을 그대로 쓰면 안 된다.

# ❌
git remote add origin git@github.com:xxxx/project.git

# ✅
git remote add origin git@github-personal:xxxx/project.git

자주 막히는 포인트

상황원인해결
fatal: not in a git directorygit init 없이 실행프로젝트 폴더 안에서 git init 먼저
push는 됐는데 엉뚱한 계정remote URL이 github.comgit remote set-url origin git@github-personal:...
SSH 인증 실패공개 키 미등록 또는 Host 오타ssh -T git@github-personal 로 테스트
git config 했는데 회사 계정으로 나옴--global 옵션 사용, 또는 git 디렉토리 밖에서 실행프로젝트 폴더 안에서 --global 없이 실행

설정 완료 후 체크리스트

  • ssh -T git@github-personal → 개인 계정 이름 확인
  • ssh -T git@github.com → 회사 계정 이름 확인
  • 개인 프로젝트에서 git config user.email → 개인 이메일 확인
  • 회사 프로젝트에서 git config user.email → 회사 이메일 확인

한 줄로 요약하면, 설정은 한 번만 해두면 끝이다. 이후 프로젝트마다 remote URL의 alias(github-personal)만 신경 쓰면 된다