Develop

์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์—์„œ Git ์‚ฌ์šฉ ๋ฐฉ๋ฒ•: SSH๋กœ ์›๊ฒฉ ์ €์žฅ์†Œ ์ ‘๊ทผํ•˜๊ธฐ

proggg 2024. 11. 5. 15:17

 

Git์€ ๋ถ„์‚ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์œผ๋กœ, ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ์ด ์—†์–ด๋„ ์ฝ”๋“œ์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์—์„œ๋Š” ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ๋‚˜ ์™ธ๋ถ€ ๋””์Šคํฌ๋ฅผ ํ™œ์šฉํ•ด ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, SSH๋ฅผ ์ด์šฉํ•ด ์ง์ ‘์ ์ธ ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ ์—†์ด๋„ ์›๊ฒฉ ์ €์žฅ์†Œ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” SSH๋ฅผ ํ™œ์šฉํ•œ ์›๊ฒฉ ์ €์žฅ์†Œ ์ ‘๊ทผ ๋ฐฉ์‹๊ณผ ํ•จ๊ป˜, ์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์—์„œ Git์„ ํšจ๊ณผ์ ์œผ๋กœ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

svn ๊ฐ™์€ ํ˜•์ƒ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„  ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, github ๊ฐ€ ์ต์ˆ™ํ•œ ์šฐ๋ฆฌ๋Š” ์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์—์„œ๋„ svn ์„ ์‚ฌ์šฉํ•ด๋ด…์‹œ๋‹ค. 


๋ชฉ์ฐจ

  1. ์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์—์„œ Git์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ 
  2. ๋กœ์ปฌ์—์„œ Git ์ €์žฅ์†Œ ์ƒ์„ฑ ๋ฐ ์ดˆ๊ธฐ ์„ค์ •
  3. Git ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•œ ๊ธฐ๋ณธ์ ์ธ ๋ฒ„์ „ ๊ด€๋ฆฌ
  4. ์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์—์„œ ์›๊ฒฉ ์ €์žฅ์†Œ ์„ค์ • ๋ฐฉ๋ฒ•
  5. SSH๋ฅผ ํ†ตํ•œ ์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์˜ ์›๊ฒฉ ์ €์žฅ์†Œ ์ ‘๊ทผ
  6. ๊ฒฐ๋ก 

1. ์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์—์„œ Git์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ 

์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ ์—†์ด๋„ Git์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ: ํšŒ์‚ฌ ๋‚ด๋ถ€ ๋ณด์•ˆ ๋„คํŠธ์›Œํฌ์—์„œ ์™ธ๋ถ€ ์—ฐ๊ฒฐ์ด ์ œํ•œ๋œ ๊ฒฝ์šฐ.
  • ์™ธ๋”ด ์ง€์—ญ: ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ํ™˜๊ฒฝ์—์„œ ์ฝ”๋“œ ์ž‘์—…์„ ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ.
  • ๋ณด์•ˆ ์š”๊ตฌ์‚ฌํ•ญ์ด ์žˆ๋Š” ํ™˜๊ฒฝ: ์‹คํ—˜ ์ฝ”๋“œ๋‚˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์™ธ๋ถ€๋กœ ๋‚˜๊ฐ€๋Š” ๊ฒƒ์ด ์ œํ•œ๋œ ํ™˜๊ฒฝ์—์„œ ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ.

Git์˜ ๋ถ„์‚ฐ ํŠน์„ฑ ๋•๋ถ„์— ์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์—์„œ๋„ ๋กœ์ปฌ ์ €์žฅ์†Œ๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


2. ๋กœ์ปฌ์—์„œ Git ์ €์žฅ์†Œ ์ƒ์„ฑ ๋ฐ ์ดˆ๊ธฐ ์„ค์ •

์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์—์„œ Git์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— ๋กœ์ปฌ Git ์ €์žฅ์†Œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™
cd my_project

# Git ์ €์žฅ์†Œ ์ดˆ๊ธฐํ™”
git init

์ด ๋ช…๋ น์–ด๋กœ .git ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋˜์–ด, ์ด ํด๋”์— Git ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ด์ œ Git ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด ์ด ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


3. Git ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•œ ๊ธฐ๋ณธ์ ์ธ ๋ฒ„์ „ ๊ด€๋ฆฌ

๋กœ์ปฌ ์ €์žฅ์†Œ์—์„œ Git ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด ์˜คํ”„๋ผ์ธ ์ƒํƒœ์—์„œ๋„ ๊ธฐ๋ณธ์ ์ธ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# ํŒŒ์ผ์„ ์Šคํ…Œ์ด์ง• ์˜์—ญ์— ์ถ”๊ฐ€
git add <ํŒŒ์ผ ์ด๋ฆ„>

# ์ปค๋ฐ‹ํ•˜๊ธฐ
git commit -m "์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€"

# ์ปค๋ฐ‹ ๋‚ด์—ญ ํ™•์ธ
git log

4. ์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์—์„œ ์›๊ฒฉ ์ €์žฅ์†Œ ์„ค์ • ๋ฐฉ๋ฒ•

4.1 ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ๋‚˜ ์™ธ๋ถ€ ๋””์Šคํฌ๋ฅผ ํ†ตํ•œ ์›๊ฒฉ ์ €์žฅ์†Œ ์„ค์ •

์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์—์„œ ์—ฌ๋Ÿฌ ๋ช…์ด ํ•จ๊ป˜ Git์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์„œ๋กœ์˜ ์ €์žฅ์†Œ๋ฅผ ์ง์ ‘ ๊ตํ™˜ํ•˜๊ฑฐ๋‚˜ ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ ๊ณต์œ  ํด๋” ๋˜๋Š” ์™ธ์žฅ ๋””์Šคํฌ๋ฅผ ํ†ตํ•ด ์›๊ฒฉ ์ €์žฅ์†Œ์ฒ˜๋Ÿผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ ๋„คํŠธ์›Œํฌ ๊ณต์œ  ํด๋”

๊ณต์œ ๋œ ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ ๊ฒฝ๋กœ์— bare ์ €์žฅ์†Œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํ˜‘์—…์ž ๊ฐ„์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ‘ธ์‹œํ•˜๊ฑฐ๋‚˜ ํ’€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ ๊ณต์œ  ํด๋”์— bare ์ €์žฅ์†Œ ์ƒ์„ฑ
git clone --bare my_project my_project.git

์ด bare ์ €์žฅ์†Œ๋ฅผ ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ ๊ณต์œ  ํด๋”์— ์œ„์น˜์‹œํ‚ค๊ณ , ํ˜‘์—…์ž๋“ค์ด ์ด ํด๋”๋ฅผ ์›๊ฒฉ ์ €์žฅ์†Œ๋กœ ์ถ”๊ฐ€ํ•˜์—ฌ ์ ‘๊ทผํ•˜๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.


5. SSH๋ฅผ ํ†ตํ•œ ์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์˜ ์›๊ฒฉ ์ €์žฅ์†Œ ์ ‘๊ทผ

์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ์ด ์—†์ง€๋งŒ, ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ๋กœ ์—ฐ๊ฒฐ๋œ ๋‹ค๋ฅธ ์„œ๋ฒ„์— Git ์ €์žฅ์†Œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ, SSH๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›๊ฒฉ ์ €์žฅ์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SSH๋Š” ๋ณด์•ˆ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์„ ์ œ๊ณตํ•˜์—ฌ Git ๋ช…๋ น์–ด๋กœ ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ ๋‚ด์—์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์•ˆ์ „ํ•˜๊ฒŒ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5.1 ์›๊ฒฉ ์ €์žฅ์†Œ ์„œ๋ฒ„ ์„ค์ •

๋จผ์ €, ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋œ ์„œ๋ฒ„์— Git ์ €์žฅ์†Œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ˜‘์—…์šฉ ์„œ๋ฒ„์—์„œ Git ์ €์žฅ์†Œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  SSH๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

# ํ˜‘์—… ์„œ๋ฒ„์—์„œ ์ €์žฅ์†Œ ์ดˆ๊ธฐํ™”
ssh user@remote-server
cd /path/to/repo
git init --bare my_project.git

์ด๋ ‡๊ฒŒ ์ƒ์„ฑ๋œ my_project.git์€ ์›๊ฒฉ ์ €์žฅ์†Œ๋กœ์„œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5.2 ๋กœ์ปฌ ์ €์žฅ์†Œ์—์„œ ์›๊ฒฉ ์ €์žฅ์†Œ ์ถ”๊ฐ€

๋กœ์ปฌ Git ํ”„๋กœ์ ํŠธ์—์„œ ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ SSH๋ฅผ ํ†ตํ•ด ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ user@remote-server:/path/to/repo ํ˜•์‹์˜ SSH ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ €์žฅ์†Œ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

# ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ SSH ๊ฒฝ๋กœ๋กœ ์ถ”๊ฐ€
git remote add origin ssh://user@remote-server:/path/to/repo/my_project.git

5.3 SSH ํ‚ค ์„ค์ • (์„ ํƒ ์‚ฌํ•ญ)

๋งค๋ฒˆ SSH ์•”ํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด, SSH ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ˜‘์—… ์„œ๋ฒ„์— ๊ณต๊ฐœ ํ‚ค๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.

  1. ๋กœ์ปฌ ๋จธ์‹ ์—์„œ SSH ํ‚ค ์ƒ์„ฑ:
  2. ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  3. ์ƒ์„ฑ๋œ ๊ณต๊ฐœ ํ‚ค๋ฅผ ์„œ๋ฒ„์— ๋“ฑ๋ก:
  4. ssh-copy-id user@remote-server

์ด์ œ SSH ํ‚ค ์„ค์ •์ด ์™„๋ฃŒ๋˜์–ด, SSH ์ ‘์† ์‹œ ์•”ํ˜ธ๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5.4 ์›๊ฒฉ ์ €์žฅ์†Œ์™€์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ํ‘ธ์‹œ ๋ฐ ํ’€

์›๊ฒฉ ์ €์žฅ์†Œ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ด์ง€๋ฉด, ์˜คํ”„๋ผ์ธ ์ƒํƒœ์—์„œ๋„ SSH๋ฅผ ํ†ตํ•ด Git ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ‘ธ์‹œํ•˜๊ณ , ํŒ€์›์ด ํ‘ธ์‹œํ•œ ๋‚ด์šฉ์„ ํ’€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# ๋กœ์ปฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์›๊ฒฉ ์ €์žฅ์†Œ์— ํ‘ธ์‹œ
git push origin main

# ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋กœ์ปฌ๋กœ ํ’€
git pull origin main

์ด๋ ‡๊ฒŒ SSH๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์ธํ„ฐ๋„ท์ด ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์—์„œ๋„, ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ ๋‚ด์—์„œ ์›๊ฒฉ ์ €์žฅ์†Œ์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ํšจ์œจ์ ์œผ๋กœ ํ˜‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


6. ๊ฒฐ๋ก 

์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์—์„œ Git์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค:

  1. ๋กœ์ปฌ ์ €์žฅ์†Œ ์ƒ์„ฑ ๋ฐ ์„ค์ •: ๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ์— Git ์ €์žฅ์†Œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์˜คํ”„๋ผ์ธ ์ƒํƒœ์—์„œ๋„ ์ฝ”๋“œ์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ ๋ฐ ์™ธ๋ถ€ ๋””์Šคํฌ๋ฅผ ํ†ตํ•œ ํ˜‘์—…: ๋„คํŠธ์›Œํฌ ๊ณต์œ  ํด๋”๋‚˜ ์™ธ๋ถ€ ๋””์Šคํฌ๋ฅผ ์›๊ฒฉ ์ €์žฅ์†Œ๋กœ ์„ค์ •ํ•˜์—ฌ ํŒ€์›๊ณผ ํ˜‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. SSH๋ฅผ ํ†ตํ•œ ์›๊ฒฉ ์ €์žฅ์†Œ ์ ‘๊ทผ: ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ ๋‚ด์˜ ๋‹ค๋ฅธ ์„œ๋ฒ„์— SSH๋กœ ์ ‘๊ทผํ•˜์—ฌ ์˜คํ”„๋ผ์ธ ์ƒํƒœ์—์„œ๋„ ํŒ€์›๊ณผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

'Develop' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ Python ] dataclass ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ  (0) 2024.11.03
C#) Grbage Collector  (0) 2024.04.22
Object-Oriented Programming ) Overroading,Override , Extend ?  (0) 2020.04.09