Search

[git] PC ํ•˜๋‚˜์—์„œ git ๊ณ„์ • ์—ฌ๋Ÿฌ ๊ฐœ ์‚ฌ์šฉํ•˜๊ธฐ

ํƒ€์ž…
๊ฐœ๋ฐœ
ํƒœ๊ทธ
git
๊ฐœ๋ฐœํ™˜๊ฒฝ
์ƒํƒœ
Published
์ƒ์„ฑ์ผ
2022/12/29 05:54
์ตœ์ข… ํŽธ์ง‘ ์ผ์‹œ
2023/02/24 11:35
2 more properties
ํšŒ์‚ฌ ๋…ธํŠธ๋ถ์„ ์•ˆ ์“ฐ๊ณ  ๊ฐœ์ธ ๋งฅ๋ถ์—์„œ ๊ฐœ์ธ ๊ฐœ๋ฐœ๊ณผ ํšŒ์‚ฌ ์—…๋ฌด๊ฐœ๋ฐœ์„ ๋‘˜ ๋‹ค ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค.
ํ˜„์žฌ ์ƒํ™ฉ์€
โ€ข
๊ฐœ์ธ ์ด๋ฉ”์ผ โ†’ ๊ฐœ์ธ 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 ์„ ํ•ด์•ผํ•œ๋‹ค.
github ์˜ SSH clone ๋งํฌ๋ฅผ ๋ณด๋ฉด ๋””ํดํŠธ host ๊ฐ’์œผ๋กœ github.com ์ด ๋“ค์–ด๊ฐ€์žˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด 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
๋ณต์‚ฌ