다중 Git 아이덴티티 관리: 개인 및 업무 계정을 위한 원활한 워크플로우
I’m happy to translate the article for you, but I’ll need the full text of the article (the content you’d like translated). Could you please paste the article’s text here? Once I have it, I’ll provide a Korean translation while keeping the source link and all formatting intact.
Introduction
우리는 모두 겪어봤습니다: 잘못된 신원으로 코드를 푸시하는 경우 (예: 개인 이메일 coding_ninja1@gmail.com을 사용해 업무 관련 코드를 커밋하는 경우).
하나의 머신에서 여러 Git 신원을 관리하는 것은 모든 개발자에게 통과 의식과도 같습니다. 오픈소스 작업을 9‑to‑5 직장과 병행하거나, 여러 프리랜스 클라이언트를 동시에 다루는 경우, 전문적인 신원이 서로 겹치기 시작하거나 어느 “모자”를 쓰고 있는지 놓치기 쉽습니다.
이 글에서는 두 단계 진화를 통해 이 문제를 한 번에 해결하는 방법을 안내합니다:
- The SSH Foundation – 서로 다른 플랫폼(GitHub vs. Bitbucket)용 고유 SSH 키를 설정합니다. 이는 연결을 안전하게 하지만, 각 새 저장소마다
user.email을 수동으로 설정해야 합니다. - The Secret Sauce (Git Conditional Includes) – Git을 컨텍스트 인식하도록 만들어, 작업 중인 폴더에 따라 이름과 이메일을 자동으로 전환합니다.
이 가이드를 끝까지 따라 하면 “설정하고 잊어버리세요” 라는 시스템을 갖추게 되어, 전문 작업은 전문적으로, 개인 프로젝트는 개인적으로 유지할 수 있습니다.
Source: …
Step 1: SSH 기본
SSH란?
SSH (Secure Shell)는 보안되지 않은 네트워크를 통해 컴퓨터가 서버와 안전하게 통신할 수 있게 해주는 프로토콜입니다. 코드를 푸시할 때마다 사용자 이름과 비밀번호를 입력하는 대신 키 쌍을 사용합니다:
- 공개 키 – Bitbucket/GitHub에 공유합니다.
- 개인 키 – 내 컴퓨터에만 보관합니다(절대 공유하지 않음).
1️⃣ 새로운 SSH 키 생성
터미널을 열고 각 계정마다 키를 생성합니다(이미 가지고 있다면 건너뛰세요).
작업용 (Bitbucket)
ssh-keygen -t ed25519 -C "work.email@acme.com" -f ~/.ssh/id_ed25519_bitbucket
개인용 (GitHub)
ssh-keygen -t ed25519 -C "personal.email@gmail.com" -f ~/.ssh/id_ed25519_github
프레이즈(암호)를 물어보면 입력하거나 비워둘 수 있습니다.
이 명령은 id_ed25519_bitbucket(및 .pub)과 id_ed25519_github(및 .pub) 파일을 생성합니다.
왜 ed25519인가?
- 보안 – RSA보다 작은 키 크기로 높은 보안 수준을 제공합니다.
- 성능 – 생성 및 검증이 더 빨라 Git 사용이 더 쾌적합니다.
- 충돌 저항성 – 특정 공격에 대해 수학적으로 더 강합니다.
2️⃣ SSH config 파일 설정
~/.ssh/config 파일은 트래픽 컨트롤러 역할을 합니다. Git은 GitHub이나 Bitbucket에 연결할 때 자동으로 올바른 키를 선택합니다.
# Personal Account (GitHub)
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_github
# Work Account (Bitbucket)
Host bitbucket.org
HostName bitbucket.org
User git
IdentityFile ~/.ssh/id_ed25519_bitbucket
nano ~/.ssh/config(또는 선호하는 편집기)로 파일을 열어(또는 새로 만들고) 위 블록을 붙여넣으세요.
3️⃣ 공개 키를 각 플랫폼에 추가
GitHub
# 공개 키 보기
cat ~/.ssh/id_ed25519_github.pub
- 출력된 내용을 복사합니다.
- GitHub에 로그인 → Settings → SSH and GPG keys → New SSH key.
- 키를 붙여넣고 저장합니다.
Bitbucket
cat ~/.ssh/id_ed25519_bitbucket.pub
- 출력된 내용을 복사합니다.
- Bitbucket에 로그인 → Personal Settings → SSH Keys → Add key.
- 키를 붙여넣고 저장합니다.
4️⃣ 클론 및 로컬 아이덴티티 설정
전역(기본) 아이덴티티
대부분의 개발자는 개인 계정을 전역 기본값으로 설정해 사이드 프로젝트가 바로 동작하도록 합니다:
git config --global user.email "personal.email@gmail.com"
새로 만들거나 클론하는 모든 저장소는 이 이메일을 기본값으로 사용합니다(로컬에서 별도로 지정하지 않는 한).
작업 저장소에 대한 로컬 오버라이드
-
SSH URL을 사용해 저장소를 클론합니다(구성 파일이 올바른 키를 자동 선택합니다):
git clone git@bitbucket.org:acme-corp/project-alpha.git -
클론한 저장소 안에서 로컬 아이덴티티를 설정합니다:
cd project-alpha git config user.name "Your Name" git config user.email "work.email@acme.com"
이제 이 저장소에서는 작업용 이메일이 사용되고, 다른 모든 저장소는 개인 이메일을 그대로 사용합니다.
수동적인 부담
위의 방법은 작동하지만 한 가지 문제가 있습니다: 클론하는 모든 작업 저장소에 대해 git config 명령을 실행하는 것을 기억해야 합니다. 이 단계를 놓치면 잘못된 이메일로 커밋하게 됩니다.
가이드의 다음 부분(“시크릿 소스”)에서는 Git의 조건부 포함을 사용해 이를 자동화하는 방법을 보여줄 것이며, 수동 단계를 완전히 없앨 수 있습니다. 기대해 주세요!
Git Conditional Includes
“개인 ‘기본 베이스’ 이메일로 전문 코드를 푸시하게 될 겁니다.”
Note: 이 수동적인 작업이 바로 Conditional Includes를 사용하는 이유입니다 — 이 전환을 자동으로 처리해 주어 다시는 생각할 필요가 없게 합니다.
Step 2: Git Conditional Includes
이제 컴퓨터가 GitHub와 Bitbucket 모두에 비밀번호를 묻지 않고 “대화”할 수 있습니다. 하지만 아직 한 가지 큰 문제가 남아 있습니다: SSH가 연결을 담당하고, Git이 이름을 담당합니다. 작업용 SSH 키를 사용해 Bitbucket에 푸시하더라도, 전역 설정 때문에 Git이 커밋을 personal_email@gmail.com으로 표시할 수 있습니다.
이 비밀 소스, Git Conditional Includes로 해결해 봅시다.
The Goal
아이덴티티를 자동화하여 git config user.email을 다시는 입력하지 않게 합니다. 이것은 “설정하고 잊어버리기” 전략입니다. Conditional Includes를 사용하면 Git에게 다음과 같이 말합니다:
내가 Work 폴더 안에서 작업하고 있다면, 자동으로 내 Acme 이메일로 아이덴티티를 교체해 주세요.
이렇게 하면 개인 이메일 주소로 실수로 작업 커밋을 푸시하는 흔한 실수를 방지할 수 있습니다.
Setting It Up (Step‑by‑step)
1. Organise Your Folders
프로젝트를 디렉터리별로 구분하세요, 예시:
~/Documents/Personal/– 개인적인 모든 파일이나 프로젝트~/Documents/Work/– 업무와 관련된 모든 파일이나 프로젝트
2. Create a “Work‑Only” Config File
nano ~/Documents/Work/.gitconfig-work
다음 내용을 .gitconfig-work에 붙여넣기:
[user]
name = Your Name
email = work.email@acme.com
저장하고 종료 (Ctrl+O, Enter, Ctrl+X).
3. Link the “Work‑Only” Config File in Your Global Config
nano ~/.gitconfig
파일 맨 아래에 다음 로직을 추가합니다:
# Default/Personal Identity
[user]
name = Your Name
email = personal.email@gmail.com
# Conditional Include: If the path starts with ~/Documents/Work/
[includeIf "gitdir:~/Documents/Work/"]
path = ~/Documents/Work/.gitconfig-work
저장하고 종료.
How It Works
When you run a Git command, Git checks your current directory:
- If you are in
~/Documents/Personal/repo, it uses the global email. - If you are in
~/Documents/Work/acme-project, theincludeIftrigger activates and overwrites the global email with the one defined in.gitconfig-work.
설정 확인
-
Work 폴더 안에 있는 저장소로 이동합니다.
-
다음을 실행합니다:
git config user.emailwork.email@acme.com이 출력되어야 합니다. -
“Work” 외부 폴더로 이동한 뒤 같은 명령을 실행합니다.
개인 이메일이 출력되어야 합니다.
결론
SSH Config (보안 액세스를 위해)와 Conditional Includes (자동화된 아이덴티티를 위해)를 결합함으로써, 여러분은 전문‑그레이드 개발 환경을 구축했습니다. 더 이상 실수로 커밋하는 일도 없고, “unrecognised user” 오류도 없으며, 새로운 저장소에 대한 수동 설정도 전혀 필요 없습니다.