Overview
개인 프로젝트와 회사 프로젝트를 모두 GitHub에서 관리하는 경우, 두 개의 서로 다른 GitHub 계정을 사용하는 것이 바람직하다.
하지만 SSH 키와 Git 설정이 하나의 사용자 정보에 묶여 있기 때문에, 계정을 분리해 사용하려면 별도의 설정이 필요하다.
이번 글에서는 회사 계정과 개인 계정을 구분하여 Git에서 함께 사용하는 방법에 대해 알아본다.
SSH 키 분리, .ssh/config 구성, Git 사용자 정보 분기 설정(.gitconfig) 등을 통해 한 시스템에서 두 계정을 유연하게 사용할 수 있도록 구성한다.
이 방식을 적용하면 다음과 같은 이점이 있다.
- 커밋 이력에 개인/회사 계정이 혼동되지 않음
- GitHub 퍼블릭/프라이빗 프로젝트를 명확히 구분 가능
- 보안 및 관리 측면에서 더욱 안전한 계정 운영 가능
Git에서 2개의 계정(SSH Key) 사용하는 방법
1. 2개의 계정 생성 후 2개의 SSH Key 생성
# Key 생성
ssh-keygen -t rsa -C "somaz94@email.com" -f "id_rsa_somaz94"
ssh-keygen -t rsa -C "somazcompany@email.com" -f "id_rsa_somazcompany"
# 확인
ls -l
-rw------- 1 somaz somaz 2610 Mar 31 10:15 id_rsa_somaz94
-rw-r--r-- 1 somaz somaz 574 Mar 31 10:15 id_rsa_somaz94.pub
-rw------- 1 somaz somaz 2602 Mar 20 14:23 id_rsa_somazcompany
-rw-r--r-- 1 somaz somaz 570 Mar 20 14:23 id_rsa_somazcompany.pub
2. `.ssh/config` 수정
cat ~/.ssh/config
Host github.com-somaz94
Hostname github.com
User somaz94
IdentityFile ~/.ssh/id_rsa_somaz94 # private key 저장
3. `.gitconfig` 와 `.gitconfig-private` 수정
cat ~/.gitconfig
[user]
email = somazcompany@somazcompany.com
name = somazcompany
# PrivateWork 디렉토리 사용
[includeIf "gitdir:~/PrivateWork/"]
path = ~/.gitconfig-private
cat ~/.gitconfig-private
[user]
email = somaz94@somaz94.com
name = somaz94
4. 사용법
회사의 github를 클론할땐 `~/PrivateWork` 폴더를 제외하고 기존과 동일하게 클론뜨면 된다.
git@github.com:{user}/tmp-test.git
그리고 Private한 개인 작업을 할때는 `~/PrivateWork` 폴더로 접속해서 아래와 같이 사용할 수 있다.
# 틀린예시
git@github.com:{user}/tmp-test.git : X
# 맞는 예시
cd ~/PrivateWork
git@github.com-somaz94:somaz94/tmp-test.git # -{User} 입력 : ~/.ssh/config
아래와 같이 확인 가능하다.
# 확인
git config -l
user.email=somazcompany@somazcompany.com
user.name=somazcompany
includeif.gitdir:~/PrivateWork/.path=~/.gitconfig-private
core.editor=vi
마무리
개인과 회사 프로젝트를 같은 Git 환경에서 다룰 때 계정 충돌을 피하는 것은 매우 중요하다.
실수로 회사 레포에 개인 계정으로 커밋하거나, 반대로 개인 프로젝트에 회사 계정이 노출되는 사례는 생각보다 흔하다.
이번에 소개한 방법은
- 각 계정별로 SSH 키를 분리
- .ssh/config 파일에서 호스트 별 설정
- .gitconfig에 디렉토리 조건 포함 설정
등을 통해 문제를 효과적으로 방지할 수 있다.
기술적으로는 간단하지만, 정리된 개발 습관을 갖는 것이 더 중요하다.
앞으로 다양한 프로젝트를 병행하는 모든 개발자라면, 이 방법을 꼭 적용해보길 추천한다.
하나의 시스템, 두 개의 깔끔한 정체성.
Git은 정리된 개발 환경에서 더욱 빛난다.
Reference
'IaC > Configuration Management' 카테고리의 다른 글
Git Rebase vs Merge (0) | 2024.06.03 |
---|---|
Ansible 활용 - ansible-galaxy에 Role/Collection 업로드 (0) | 2023.12.25 |
Ansible 개념과 설치 / 사용법(CentOS 7.9) (0) | 2022.02.07 |