GitHub Multiple Accounts

Environment

  • MacOS 13.4

Introduction

ํ˜‘์—… ํ˜น์€ ๊ธฐ๋ก์„ ํ•˜๋‹ค๋ณด๋ฉด Git์ด๋ผ๋Š” ํ˜•์ƒ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜๊ฒŒ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ €์žฅ์†Œ์ธ GitHub์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์—ฌ๋Ÿฌ ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ SSH Key ์ƒ์„ฑ ๋ฐ gitconfig ์ถ”๊ฐ€์ ์ธ ์„ค์ •์ด ํ•„์š”ํ•˜๋‹ค.

How To Use

personal ๋ถ€๋ถ„์€ ์ž์‹ ์˜ ๊ณ„์ •์œผ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋ฉฐ, GitHub ๊ณ„์ •๋ช…๊ณผ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์—ฌ๋Ÿฌ ๋ชจ๋กœ ํŽธํ•˜๋‹ค.

1. SSH Key ์ƒ์„ฑ

GitHub์˜ ๊ณ„์ •๋งˆ๋‹ค ์„œ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” Repository๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— SSHํ‚ค๋ฅผ ๊ณ„์ • ๋ณ„๋กœ ์ƒ์„ฑํ•˜์—ฌ ์ ‘๊ทผํ•˜๋„๋ก ํ•œ๋‹ค. ssh key ๋Š” ~/.ssh ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์— ์ €์žฅํ•˜๊ฒŒ ๋˜๋ฉฐ ํ‚ค ์ƒ์„ฑ์€ ์•„๋ž˜์™€ ๊ฐ™์œผ๋ฉฐ ์ด๋ฉ”์ผ์€ GitHub ๊ณ„์ •์„ ์ž…๋ ฅํ•˜๋„๋ก ํ•œ๋‹ค.

ssh-keygen -t rsa -C "personal@email.com" -f "id_rsa_personal"
ssh-keygen -t rsa -C "work@eamil.com" -f "id_rsa_work" 

์‹คํ–‰ํ•˜๋ฉด ์ €์žฅ ์œ„์น˜์™€ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ž…๋ ฅ ๋ฐ›์œผ๋ฉฐ ๊ณต์‹์ ์œผ๋กœ๋Š” ํŒจ์Šค์›Œ๋“œ ์„ค์ •์„ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ณต๊ฐœํ‚ค(id_rsa_.pub)์™€ ๊ฐœ์ธํ‚ค(id_rsa_)๋ฅผ ์ €์žฅ ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ƒ์„ฑํ•œ ํ‚ค๋ฅผ ๋“ฑ๋กํ•œ๋‹ค.

ssh-add id_rsa_personal
ssh-add id_rsa_work

๊ทธ ํ›„ ssh config ์„ค์ •์— ์ถ”๊ฐ€ํ•ด์ฃผ๋„๋ก ํ•œ๋‹ค.

# Personal GitHub Account
Host github.com-personal
HostName github.com
IdentityFile ~/.ssh/id_rsa_personal
User git

# Work GitHub Account
Host github.com-work
HostName github.com
IdentityFile ~/.ssh/id_rsa_work
User git

2. SSH Key ๋“ฑ๋ก

์•ž์„œ ์ƒ์„ฑ ๋œ ๊ณต๊ฐœํ‚ค๋ฅผ GitHub์—์„œ ๋“ฑ๋ก ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.(Settings-Access-SSH and GPG keys - New SSH Key)

Title: ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„
Key type: Authenication Key
Key: {๊ณต๊ฐœ ํ‚ค}

๋“ฑ๋ก ํ›„ ์•„๋ž˜ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ •์ƒ์ ์œผ๋กœ ๋“ฑ๋ก๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

> ssh -T github.com-personal
Hi hyoguoo! You've successfully authenticated, but GitHub does not provide shell access.

3. gitconfig ๋ณ€๊ฒฝ

commit์€ gitconfig์— ์„ค์ •๋œ email๊ณผ name์œผ๋กœ commit์ด ์ฐํžˆ๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋ฅผ ๋””๋ ‰ํ† ๋ฆฌ๋ณ„๋กœ ๋‚จ๊ฒจ์ง€๋Š” github ๊ณ„์ •์„ ์„ค์ •ํ•ด์ค€๋‹ค. ๋ณดํ†ต ์‚ฌ์šฉ์ž๋ผ๋ฉด .gitconfg๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋˜์–ด์žˆ๋Š”๋ฐ,

[user]
  name = personal
  email = personal@email.com

์ƒˆ๋กœ ๋‘ ๊ฐœ์˜ config๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ธฐ์กด gitconfig๋Š” ๊ฒฝ๋กœ๋ณ„๋กœ ํ•ด๋‹น config๋ฅผ ๊ฐ€์ ธ์˜ค๋„๋ก ์„ค์ •ํ•œ๋‹ค.

  • ~/.gitconfig-personal

[user]
  name = personal
  email = personal@email.com
  • ~/.gitconfig-work

[user]
  name = work
  email = work@email.com
  • ~/.gitconfig

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

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

4. ์„ค์ •๋œ SSH๋ฅผ ์ด์šฉํ•˜์—ฌ GitHub Repo์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•

Git Clone ๋ฐ Remote Addํ•  ๋•Œ HTTPS ๋ฐฉ์‹์ด ์•„๋‹Œ SSH๋ฅผ ํ†ตํ•˜์—ฌ ๊ฐ€์ ธ์˜จ๋‹ค. ํ˜„์žฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ SSH๋ฅผ ํ†ตํ•œ Clone URL์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ƒ์„ฑ๋˜๋Š”๋ฐ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์œ„์—์„œ ์„ค์ •ํ•œ Host๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ๊ฐ€์ ธ์˜ค๋„๋ก ํ•œ๋‹ค.

git@github.com:hyoguoo/DOCS.git
git@github.com-personal:hyoguoo/DOCS.git # -personal ์ถ”๊ฐ€

Last updated

Was this helpful?