회사 프로젝트에서 작업하다 개인 레포에 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 계정으로 로그인한 뒤
- Settings → SSH and GPG keys → New SSH key
- Title:
personal-mac(구분 가능한 이름) - Key type: Authentication Key
- Key: 복사한 공개 키 붙여넣기
- 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+X → Y → Enter
연결 테스트
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 directory | git init 없이 실행 | 프로젝트 폴더 안에서 git init 먼저 |
| push는 됐는데 엉뚱한 계정 | remote URL이 github.com | git 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)만 신경 쓰면 된다