GitHub Multiple Accounts

ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ GitHub ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด SSH ํ‚ค์™€ gitconfig๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃฌ๋‹ค.(MacOS ๊ธฐ์ค€)

์„ค์ • ๋ฐฉ๋ฒ•

๊ณ„์ •๋ณ„๋กœ SSH ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , Git ์„ค์ •์„ ๋ถ„๋ฆฌํ•˜์—ฌ ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ์—์„œ๋Š” ์ง€์ •๋œ ๊ณ„์ • ์ •๋ณด๋กœ ์ปค๋ฐ‹ํ•˜๋„๋ก ์„ค์ •ํ•œ๋‹ค.

1. ๊ณ„์ •๋ณ„ SSH ํ‚ค ์ƒ์„ฑ

๊ฐ GitHub ๊ณ„์ •์€ ๊ณ ์œ ํ•œ SSH ํ‚ค๋ฅผ ํ†ตํ•ด ์ €์žฅ์†Œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ, ๊ณ„์ •๋งˆ๋‹ค ๋ณ„๋„์˜ ํ‚ค๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.

# personal / work ๊ณ„์ •์— ๋งž๊ฒŒ GitHub ์ด๋ฉ”์ผ ์ฃผ์†Œ ์„ค์ •, rsa ๋ถ€๋ถ„๋„ ๋™์ผํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ 
# personal ๊ณ„์ •์šฉ SSH ํ‚ค ์ƒ์„ฑ
ssh-keygen -t rsa -C "personal@email.com" -f "id_rsa_personal"

# work ๊ณ„์ •์šฉ SSH ํ‚ค ์ƒ์„ฑ
ssh-keygen -t rsa -C "work@email.com" -f "id_rsa_work"

์œ„ ๋ช…๋ น์–ด ์‹คํ–‰ ์‹œ ํ‚ค๋ฅผ ์ €์žฅํ•  ์œ„์น˜์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅ๋ฐ›์œผ๋ฉฐ(๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ • ๊ถŒ์žฅ), ์‹คํ–‰์ด ์™„๋ฃŒ๋˜๋ฉด ~/.ssh ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๊ณต๊ฐœํ‚ค(id_rsa_*.pub)์™€ ๊ฐœ์ธํ‚ค(id_rsa_*)๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

2. SSH Agent์— ํ‚ค ๋“ฑ๋ก

์ƒ์„ฑํ•œ SSH ํ‚ค๋ฅผ SSH Agent์— ๋“ฑ๋กํ•˜์—ฌ ์ƒ์„ฑํ•œ ํ‚ค๋ฅผ ๋“ฑ๋กํ•œ๋‹ค.

ssh-add ~/.ssh/id_rsa_personal
ssh-add ~/.ssh/id_rsa_work

3. SSH ์„ค์ • ํŒŒ์ผ ์ˆ˜์ •

~/.ssh/config ํŒŒ์ผ์— ๊ฐ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•  ํ˜ธ์ŠคํŠธ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ, SSH๊ฐ€ ํŠน์ • ํ˜ธ์ŠคํŠธ์— ์ ‘์†ํ•  ๋•Œ ์ง€์ •๋œ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

4. GitHub ๊ณ„์ •์— ๊ณต๊ฐœํ‚ค ๋“ฑ๋ก

๊ฐ ๊ณ„์ •์˜ GitHub ์„ค์ • ํŽ˜์ด์ง€(Settings > SSH and GPG keys)์—์„œ New SSH Key ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์ƒ์„ฑํ•œ ๊ณต๊ฐœํ‚ค(id_rsa_*.pub)์˜ ๋‚ด์šฉ์„ ๋“ฑ๋กํ•œ๋‹ค.

๋“ฑ๋ก ํ›„ ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ๊ฐ ์„ค์ •์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ ์šฉ๋˜์—ˆ๋Š”์ง€ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋‹ค.

5. ๋””๋ ‰ํ† ๋ฆฌ๋ณ„ Git ์„ค์ • ๋ถ„๋ฆฌ

๋””๋ ‰ํ† ๋ฆฌ ๋ณ„๋กœ ์ปค๋ฐ‹ ๋  ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ์ด๋ฉ”์ผ ์ •๋ณด๋ฅผ ๊ณ„์ •๋ณ„๋กœ ๋ถ„๋ฆฌ๋œ ์„ค์ • ํŒŒ์ผ์— ๊ฐ๊ฐ ์ž‘์„ฑํ•œ๋‹ค.

๊ทธ ํ›„, ๋ฉ”์ธ ~/.gitconfig ํŒŒ์ผ์— includeIf ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ์— ๋”ฐ๋ผ ํ•ด๋‹น ๊ณ„์ •์˜ ์„ค์ • ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๋„๋ก ์„ค์ •ํ•œ๋‹ค.

  • ~/Repositories/personal/ ๋””๋ ‰ํ† ๋ฆฌ ํ•˜์œ„: ~/.gitconfig-personal ํŒŒ์ผ์˜ ์„ค์ • ์‚ฌ์šฉ

  • ~/Repositories/work/ ๋””๋ ‰ํ† ๋ฆฌ ํ•˜์œ„: ~/.gitconfig-work ํŒŒ์ผ์˜ ์„ค์ • ์‚ฌ์šฉ

6. ์„ค์ •๋œ ๊ณ„์ •์œผ๋กœ ์ €์žฅ์†Œ ์‚ฌ์šฉ

์ €์žฅ์†Œ๋ฅผ cloneํ•˜๊ฑฐ๋‚˜ remote๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ, ~/.ssh/config์— ์„ค์ •ํ•œ ํ˜ธ์ŠคํŠธ(github.com-personal ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ์•ผ ์˜ฌ๋ฐ”๋ฅธ SSH ํ‚ค๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.

  • ๊ธฐ๋ณธ SSH ์ฃผ์†Œ: git@github.com:hyoguoo/DOCS.git

  • ๋ณ€๊ฒฝํ•  ์ฃผ์†Œ: git@github.com-personal:hyoguoo/DOCS.git

Last updated