다중 Git 아이덴티티 관리: 개인 및 업무 계정을 위한 원활한 워크플로우

발행: (2026년 1월 17일 오전 04:24 GMT+9)
11 min read
원문: Dev.to

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 직장과 병행하거나, 여러 프리랜스 클라이언트를 동시에 다루는 경우, 전문적인 신원이 서로 겹치기 시작하거나 어느 “모자”를 쓰고 있는지 놓치기 쉽습니다.

이 글에서는 두 단계 진화를 통해 이 문제를 한 번에 해결하는 방법을 안내합니다:

  1. The SSH Foundation – 서로 다른 플랫폼(GitHub vs. Bitbucket)용 고유 SSH 키를 설정합니다. 이는 연결을 안전하게 하지만, 각 새 저장소마다 user.email을 수동으로 설정해야 합니다.
  2. 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
  1. 출력된 내용을 복사합니다.
  2. GitHub에 로그인 → SettingsSSH and GPG keysNew SSH key.
  3. 키를 붙여넣고 저장합니다.

Bitbucket

cat ~/.ssh/id_ed25519_bitbucket.pub
  1. 출력된 내용을 복사합니다.
  2. Bitbucket에 로그인 → Personal SettingsSSH KeysAdd key.
  3. 키를 붙여넣고 저장합니다.

4️⃣ 클론 및 로컬 아이덴티티 설정

전역(기본) 아이덴티티

대부분의 개발자는 개인 계정을 전역 기본값으로 설정해 사이드 프로젝트가 바로 동작하도록 합니다:

git config --global user.email "personal.email@gmail.com"

새로 만들거나 클론하는 모든 저장소는 이 이메일을 기본값으로 사용합니다(로컬에서 별도로 지정하지 않는 한).

작업 저장소에 대한 로컬 오버라이드

  1. SSH URL을 사용해 저장소를 클론합니다(구성 파일이 올바른 키를 자동 선택합니다):

    git clone git@bitbucket.org:acme-corp/project-alpha.git
  2. 클론한 저장소 안에서 로컬 아이덴티티를 설정합니다:

    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

이제 컴퓨터가 GitHubBitbucket 모두에 비밀번호를 묻지 않고 “대화”할 수 있습니다. 하지만 아직 한 가지 큰 문제가 남아 있습니다: 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).

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, the includeIf trigger activates and overwrites the global email with the one defined in .gitconfig-work.

설정 확인

  1. Work 폴더 안에 있는 저장소로 이동합니다.

  2. 다음을 실행합니다:

    git config user.email

    work.email@acme.com이 출력되어야 합니다.

  3. “Work” 외부 폴더로 이동한 뒤 같은 명령을 실행합니다.
    개인 이메일이 출력되어야 합니다.

결론

SSH Config (보안 액세스를 위해)와 Conditional Includes (자동화된 아이덴티티를 위해)를 결합함으로써, 여러분은 전문‑그레이드 개발 환경을 구축했습니다. 더 이상 실수로 커밋하는 일도 없고, “unrecognised user” 오류도 없으며, 새로운 저장소에 대한 수동 설정도 전혀 필요 없습니다.

Back to Blog

관련 글

더 보기 »

Git 및 GitHub 시작하기

새로운 학습 곡선과 기회를 탐구하는 것은 내가 2026년에 절대 하지 않을 것이라고 생각했던 일입니다. 이 글에서는 첫 번째 w 동안 배운 교훈들을 공유합니다.

Git worktree — 스태시 중단, 병렬 작업 시작

소개: 브랜치 전환의 고통 😤 Git을 충분히 오래 사용해왔다면, 이 순간을 경험했을 것입니다: 현재 기능 개발에 깊이 파고 있습니다. 파일들은 절반 정도 작성된 상태이고...