ํ์ฌ ๋
ธํธ๋ถ์ ์ ์ฐ๊ณ ๊ฐ์ธ ๋งฅ๋ถ์์ ๊ฐ์ธ ๊ฐ๋ฐ๊ณผ ํ์ฌ ์
๋ฌด๊ฐ๋ฐ์ ๋ ๋ค ํ๊ณ ์ถ์๋ค.
ํ์ฌ ์ํฉ์
โข
๊ฐ์ธ ์ด๋ฉ์ผ โ ๊ฐ์ธ github
โข
ํ์ฌ ์ด๋ฉ์ผ โ ํ์ฌ gitlab
์ ์จ์ผํ๋ ์ํฉ์ด๋ค.
๋ ๊ฐ์ git ๊ณ์ ์ ํ ๋จธ์ ์์ ๋ชจ๋ ์ฌ์ฉํ๋ ค๋ฉด SSH key ๋ฅผ ์จ์ผํ๋ค.
( SSH ๋์ https ๋ฐฉ์์ ์ ์งํ๊ณ ์ถ๋ค๋ฉด ํ๋ก์ ํธ๋ง๋ค ๋ก์ปฌ ์ต์์์ ์๋ .git/config ํ์ผ์ ์์ ํด์ค์ผ ํ๋ค. )
๊ฐ์ธ github ๋ https ๋ฐฉ์์ผ๋ก ์ฐ๋ฉด์, ํ์ฌ gitlab ๋ง SSH ๋ฐฉ์์ผ๋ก ์ฌ์ฉํด๋ ๋๊ธด ํ์ง๋ง ๊ธฐ์ SSH key ๋ฅผ ๋ง๋๋ ๊น์ ๋ ๋ค ๋ง๋ค์๋ค.
~/.ssh ๋ก ์ด๋
cd ~/.ssh
Bash
๋ณต์ฌ
ssh key ์์ฑ
ssh-keygen -t rsa -C "๊ฐ์ธ git ์ด๋ฉ์ผ" -f "ssh key ๊ฐ์ธ์ฉ"
ssh-keygen -t rsa -C "ํ์ฌ git ์ด๋ฉ์ผ" -f "ssh key ํ์ฌ์ฉ"
# ์์
ssh-keygen -t rsa -C "chs98105@gmail.com" -f "personal_git_key"
Bash
๋ณต์ฌ
ssh key ์ด๋ฆ์ ๋ณธ์ธ ๋ง์๋๋ก ํด๋ ๋๋ค.
key ์์ฑ ๋ช
๋ น์ด๋ฅผ ์น๋ฉด ๋น๋ฐ๋ฒํธ(passphrase) ๋ฅผ ์
๋ ฅํ๋ผ๊ณ ๋์ค๋๋ฐ, ๋๋ ์
๋ ฅํ์ง ์๊ณ ๋ฐ๋ก ENTER ๋ฅผ ๋๋ ๋ค.
ssh key ์ ๋น๋ฐ๋ฒํธ๋ ?
SSH ์ธ์ฆ ๋ฐฉ์์ public key(์๋ฒ) ์ private key(๋ก์ปฌ) ๋ฅผ ์ด์ฉํด์ ๋ฉ์์ง ์ํธํ ์ฑ๊ณต ์ฌ๋ถ๋ก ์ธ์ฆ ์ฒ๋ฆฌ๋ฅผ ํ๋ ๋ฐฉ์์ด๋ค.
์
๋ ฅํ๋ผ๊ณ ํ๋ ๋น๋ฐ๋ฒํธ๋ ๋ก์ปฌ์ ์๋ private key ๋ฅผ ๋ณดํธํ๊ธฐ ์ํ ๋น๋ฐ๋ฒํธ์ด๋ค.
๋ง์ฝ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํ๊ฒ ๋๋ค๋ฉด ์ด ssh ํค๋ฅผ ์ฌ์ฉํ ๋๋ง๋ค ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํด์ค์ผ ํ๋ค.
ssh key ์์ฑ ์๋ฃ
์๋์ ๊ฐ์ด personal_git_key ์ personal_git_key.pub ์ด ์๊ฒผ๋ค.
.pub ํค๋ ๋ง ๊ทธ๋๋ก public ํค๋ก ์ธ์ฆํ ์๋ฒ์ ์ฌ๋ฆด ํค์ด๊ณ ,
ํ์ฅ์๊ฐ ์๋ key ๋ private ํค ์ด๋ฏ๋ก ์ ์ถ๋๋ฉด ์ ๋๋ ํค์ด๋ค.
(์ ํ์ฌํญ) ssh key ๋ฅผ ssh-agent ์ ๋ฑ๋ก
ssh ํค๋ฅผ ์์ฑํ ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํ๋ค๋ฉด ๋งค ๋ฒ ์น๋ ๊ฒ์ด ๊ท์ฐฎ์๋ฐ, ssh-agent ์ ๋ฑ๋กํ๋ฉด ๋งค๋ฒ ๋น๋ฐ๋ฒํธ๋ฅผ ์น์ง ์์๋ ๋๋ค.
ssh key ๋ฅผ ์์ฑํ ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์์ฑํ์ง ์์๋ค๋ฉด ์ด ๊ณผ์ ์ด ํ์์๋ค.
eval "$(ssh-agent -s)"
ssh-add -K ~/.ssh/[ํค ์ด๋ฆ]
Bash
๋ณต์ฌ
ssh config ์ถ๊ฐ
~/.ssh/config ํ์ผ์ ์๋ ๋ด์ฉ์ ์ถ๊ฐํ๋ค. ( ๊ธฐ์กด์ ํ์ผ์ด ์์ผ๋ฉด ํ์ผ ์์ฑ )
# Host ๋ ๋ณ์นญ ๊ฐ๋
์ด๋ฏ๋ก ๋ณธ์ธ์ด ์ฌ์ฉํ๊ธฐ ํธํ๊ฒ ์ธํ
ํด๋ ๋ฉ๋๋ค
Host github.com-me
HostName github.com
User git
IdentityFile ~/.ssh/personal_git_key
Host gitlab.com-{ํ์ฌ๋ช
}
HostName gitlab.com
User git
IdentityFile ~/.ssh/{ํ์ฌ๋ช
}_git_key
Bash
๋ณต์ฌ
โข
Host : ssh ์ ์ํ ๋ github.com-me ๋ก ๋ค์ด์ค๋ host ( ์ฝ๊ฒ ๋ถ๋ฅด๊ธฐ ์ํ ๋ณ๋ช
๊ฐ๋
)
โข
HostName : ํด๋น Host ๋ช
์ผ๋ก ๋ค์ด์์ ๋ ์ค์ ๋ก ์ฐ๊ฒฐ๋๋ Host
โข
User : ๋งจ ์์ ๋ถ๋ ์ด๋ฆ ( @ ์ ๋ถ๋ถ )
โข
IdentityFile : private ํค ํ์ผ
public key ๋ณต์ฌํด์ github ์ ๋ฑ๋ก
cat ~/.ssh/personal_git_key.pub
Bash
๋ณต์ฌ
๋งจ ์ฒ์(ssh-rsa)๋ถํฐ ๋๊น์ง ๋ค ๋ณต์ฌํด์ github ์์ ๋ฑ๋กํด์ค๋ค.
github SSH key ์ถ๊ฐ ๋งํฌ
gitlab ์ ์๋ ํ์ด์ง
ssh ์ธ์ฆ ํ ์คํธ
ssh github.com-me
Bash
๋ณต์ฌ
ssh config ์์์ ์์ฑํ Host ๋ณ์นญ์ผ๋ก ssh ์ธ์ฆ ํ
์คํธ๋ฅผ ํด๋ณด์.
์ด๋ฌํ ๋ฌธ๊ตฌ๊ฐ ๋ฌ๋ค๋ฉด ์ ์์ด๋ค.
clone ํ๋ ๋ฐฉ๋ฒ
https ๋ฅผ ์ฌ์ฉํ ๋์ฒ๋ผ ๊ทธ๋ฅ ๋ณต์ฌํด์ clone ํ๋ฉด ์ ๋๊ณ , ssh config ์์ ์ค์ ํ Host ์ด๋ฆ์ผ๋ก ์์ ํ ๋ค์ clone ์ ํด์ผํ๋ค.
์๋ฅผ ๋ค์ด ssh config ์์์ Host ๋ช
์ github.com-me ๋ก ์ค์ ํ๋ค๋ฉด
git@github.com-me:{์ ์ ๋ช
}/{๋ ํฌ๋ช
}.git ์ฒ๋ผ Host ๋ถ๋ถ์ ๋ณธ์ธ ์ค์ ์ ๋ง๊ฒ ๋ฐ๊ฟ์ค์ผ ํ๋ค.
(์ ํ์ฌํญ 1) ์ปค๋ฐ ๋ก๊ทธ์ user.email ๋ฐ๊พธ๊ธฐ
๋ง์ฝ ์ ์ญ์ ์ผ๋ก user.email ๊ณผ ์ด ์ค์ ๋ผ์๋ค๋ฉด, ์ปค๋ฐ์ ํ ์ ํด๋น user ํ๋กํ๋ก ์ปค๋ฐ ๋ก๊ทธ๊ฐ ์ฐํ๊ฒ ๋๋ค.
ssh key ๋ ์ ์ํ์
๋ง ํ ๋ฟ ssh key ๋ง๋ค ์ปค๋ฐ๋ก๊ทธ์ ํ๋กํ๊น์ง ์๋์ผ๋ก ์ค์ ํด์ฃผ์ง๋ ์๋๋ค.
๋ฐ๋ผ์ ์ ์ญ ํ๋กํ ์ค์ ์ ๊ณ์ ์ ์งํ๊ณ ์ถ์๋ฐ ํ๋ก์ ํธ๋ง๋ค ์ปค๋ฐ ์ด๋ฉ์ผ์ ๋ณ๊ฒฝํ๊ณ ์ถ๋ค๋ฉด, ์ด์ฉ ์ ์์ด ๋ก์ปฌ git config ์์ ์๋์ผ๋ก ๋ฐ๊ฟ์ค์ผ ํ๋ค.
$ git config user.email <์ํ๋์ ์ ์ด๋ฉ์ผ>
Python
๋ณต์ฌ
๋ง์ฝ global config ๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ถ๋ค๋ฉด git config --global ~ ๋ก ํด์ฃผ๋ฉด ๋๋ค.
config ๊ฐ ํ์ธ
$ git config --list --show-origin
Python
๋ณต์ฌ
โข
--show-origin : ํด๋น config ์์ฑ์ด local ์์ ์ค์ ๋๋์ง global ์์ ์ค์ ๋๋์ง ์ง๊ด์ ์ผ๋ก ํ์ธํ ์ ์๋ค.
(์ ํ์ฌํญ 2) git config ์์
์๋กญ๊ฒ clone ์ ๋ฐ์ ๋ ํฌ๊ฐ ์๋ ๊ธฐ์กด ๋ ํฌ์ ๊ฒฝ์ฐ
ํ๋ก์ ํธ ์์ git config ํ์ผ์์ remote ๋ ํฌ์งํ ๋ฆฌ ์ฃผ์๋ฅผ ์์ ํด์ค์ผ ํ๋ค.
remote ์ฃผ์๋ ์์์ ํ๋ ๋๋ก ์ํ๋ ssh key ์ Host ์ฃผ์๋ก ๋ฐ๊ฟ์ค์ผ ํ๋ค.
ex) {ํ๋ก์ ํธ๋ฃจํธ}/git/config
[remote "orgin"]
url = git@github.com-me:{์ ์ ๋ช
}/{๋ ํฌ๋ช
}.git
Bash
๋ณต์ฌ