Home > CS > 2024 > ๐Ÿ’พ [CS] git์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?

๐Ÿ’พ [CS] git์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?
CS

๐Ÿ’พ [CS] git์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?

  • ๋ถ„์‚ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(Distributed Version Control System)์œผ๋กœ, ์†Œ์Šค ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”์ ํ•˜๊ณ  ํ˜‘์—…์„ ํšจ์œจ์ ์œผ๋กœ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.
  • Git์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ์ ํŠธ์˜ ์ด๋ ฅ์„ ๊ด€๋ฆฌํ•˜๊ณ , ๋™์‹œ์— ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ๊ณผ ํ˜‘๋ ฅํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

1๏ธโƒฃ Git์˜ ์ฃผ์š” ํŠน์ง•.

1๏ธโƒฃ ๋ถ„์‚ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ.

  • Git์€ ์ค‘์•™ ์„œ๋ฒ„๋ฟ ์•„๋‹ˆ๋ผ ๊ฐ ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ์— ์ „์ฒด ์†Œ์Šค ์ฝ”๋“œ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์ด ์—†์–ด๋„ ๋กœ์ปฌ์—์„œ ๋ชจ๋“  ๊ธฐ๋Šฅ(๋ธŒ๋žœ์น˜, ์ปค๋ฏธ์Šค ๋กœ๊ทธ ํ™•์ธ ๋“ฑ)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2๏ธโƒฃ ๋น ๋ฅธ ์„ฑ๋Šฅ.

  • Git์€ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋กœ์ปฌ์—์„œ ๋™์ž‘ํ•˜๋ฏ€๋กœ, ํŒŒ์ผ ๋ณ€๊ฒฝ ์ถ”์ , ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ, ๋ณ‘ํ•ฉ ๋“ฑ์ด ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

3๏ธโƒฃ ๋ธŒ๋žœ์น˜ ๊ธฐ๋ฐ˜ ์›Œํฌํ”Œ๋กœ์šฐ.

  • ๋ธŒ๋žœ์น˜๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ณ , ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์ด๋‚˜ ์‹คํ—˜์„ ๋…๋ฆฝ์ ์œผ๋กœ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ธŒ๋žœ์น˜๋ฅผ ๋ณ‘ํ•ฉ(Merge)ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ๋•Œ๋„ ๋งค์šฐ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

4๏ธโƒฃ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ.

  • Git์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ SHA-1 ํ•ด์‹œ๊ฐ’์œผ๋กœ ๊ด€๋ฆฌํ•˜์—ฌ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ์˜ ์ด๋ ฅ๊ณผ ์ƒํƒœ๊ฐ€ ์†์ƒ๋˜๊ฑฐ๋‚˜ ๋ณ€์กฐ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

5๏ธโƒฃ ํšจ์œจ์ ์ธ ํ˜‘์—… ์ง€์›.

  • ๊ฐœ๋ฐœ์ž ๊ฐ„์˜ ํ˜‘์—…์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ถฉ๋Œ์„ ์ตœ์†Œํ™”ํ•˜๊ณ , ๋™์‹œ ์ž‘์—…์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • pull, push, merge ๋“ฑ์˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ณต์œ ํ•˜๊ณ  ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ Git์˜ ๊ธฐ๋ณธ ๊ฐœ๋….

1๏ธโƒฃ Repository(์ €์žฅ์†Œ)

  • ํ”„๋กœ์ ํŠธ์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ํŒŒ์ผ๊ณผ ์ด๋“ค์˜ ๋ณ€๊ฒฝ ์ด๋ ฅ์„ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„.
  • ๋กœ์ปฌ ์ €์žฅ์†Œ(Local Repository)์™€ ์›๊ฒฉ ์ €์žฅ์†Œ(Remote Repository)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

2๏ธโƒฃ Commit(์ปค๋ฐ‹)

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

3๏ธโƒฃ Branch(๋ธŒ๋žœ์น˜)

  • ๋…๋ฆฝ์ ์ธ ์ž‘์—…์„ ์œ„ํ•œ ๋ถ„๊ธฐ์ .
  • ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜๋Š” main ๋˜๋Š” master์ด๋ฉฐ, ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด๋‚˜ ์‹คํ—˜์„ ์œ„ํ•ด ๋…๋ฆฝ์ ์ธ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4๏ธโƒฃ Clone(ํด๋ก )

  • ์›๊ฒฉ ์ €์žฅ์†Œ(Remote Repository)๋ฅผ ๋กœ์ปฌ(Local)๋กœ ๋ณต์ œํ•˜์—ฌ ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ์ž‘์—….

5๏ธโƒฃ Pull(ํ’€)

  • ์›๊ฒฉ ์ €์žฅ์†Œ(Remote Repository)์˜ ์ตœ์‹  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ช…๋ น์–ด.

6๏ธโƒฃ Push(ํ‘ธ์‹œ)

  • ๋กœ์ปฌ ์ €์žฅ์†Œ(Local Repository)์—์„œ ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ ์›๊ฒฉ ์ €์žฅ์†Œ(Remote Repository)์— ์—…๋กœ๋“œ(Upload)ํ•˜๋Š” ๋ช…๋ น์–ด.

7๏ธโƒฃ Merge(๋ณ‘ํ•ฉ)

  • ํ•œ ๋ธŒ๋žœ์น˜(Branch)์—์„œ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜(Branch)๋กœ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ํ†ตํ•ฉํ•˜๋Š” ์ž‘์—….

8๏ธโƒฃ Staging Area(์Šคํ…Œ์ด์ง• ์˜์—ญ)

  • ์ปค๋ฐ‹(Commit)ํ•˜๊ธฐ ์ „์— ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ์„ ์ž„์‹œ๋กœ ์ €์žฅํ•˜๋Š” ๊ณณ.
  • git add ๋ช…๋ น์–ด๋กœ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์Šคํ…Œ์ด์ง• ์˜์—ญ(Staging Area)์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

3๏ธโƒฃ Git์˜ ์žฅ์ .

1๏ธโƒฃ ํšจ์œจ์ ์ธ ํ˜‘์—….

  • ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋™์‹œ์— ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ธŒ๋žœ์น˜(Branch)์™€ ๋ณ‘ํ•ฉ(Merge) ๊ธฐ๋Šฅ์„ ์ œ๊ณต.

2๏ธโƒฃ ํžˆ์Šคํ† ๋ฆฌ ๊ด€๋ฆฌ.

  • ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์‹œ๊ฐ„์ˆœ์œผ๋กœ ๊ธฐ๋กํ•˜์—ฌ ์–ธ์ œ๋“ ์ง€ ๊ณผ๊ฑฐ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ์Œ.

3๏ธโƒฃ ๋ถ„์‚ฐํ˜• ๊ตฌ์กฐ.

  • ๋„คํŠธ์›Œํฌ์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ๋กœ์ปฌ์—์„œ๋„ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Œ.

4๏ธโƒฃ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ ์ง€์›.

  • ๋Œ€๊ทœ๋ชจ ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ๋„ ๋น ๋ฅด๊ณ  ์•ˆ์ •์ ์œผ๋กœ ๋™์ž‘.

5๏ธโƒฃ ์˜คํ”ˆ ์†Œ์Šค ๋ฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์›.

  • ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋กœ์„œ ํ™œ๋ฐœํ•œ ์ปค๋ฎค๋‹ˆํŠธ์™€ ๋‹ค์–‘ํ•œ ๋„๊ตฌ ์ง€์›.

4๏ธโƒฃ Git์˜ ๋‹จ์ .

1๏ธโƒฃ ํ•™์Šต ๊ณก์„ .

  • Git ๋ช…๋ น์–ด์™€ ๊ฐœ๋…์ด ๋ณต์žกํ•˜์—ฌ ์ดˆ๋ณด์ž๊ฐ€ ์ตํžˆ๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Œ.

2๏ธโƒฃ ์ถฉ๋Œ ๊ด€๋ฆฌ.

  • ํ˜‘์—… ์ค‘ ๋ณ‘ํ•ฉ ์ถฉ๋Œ(Merge Conflict)์ด ๋ฐœ์ƒํ•˜๋ฉด ์ˆ˜๋™์œผ๋กœ ํ•ด๊ฒฐํ•ด์•ผ ํ•จ.

3๏ธโƒฃ ํŒŒ์ผ ํฌ๊ธฐ ์ œํ•œ.

  • ๋Œ€์šฉ๋Ÿ‰ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ ๊ด€๋ฆฌ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Œ(Git LFS ์‚ฌ์šฉ ํ•„์š”).

5๏ธโƒฃ Git์ด ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์ด์œ .

    1. ์˜คํ”ˆ์†Œ์Šค๋กœ ๋ฌด๋ฃŒ ์ œ๊ณต.
    1. Github, GitLab, Bitbucket ๋“ฑ์˜ ํ”Œ๋žซํผ๊ณผ์˜ ํ†ตํ•ฉ.
    1. ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐœ ๋„๊ตฌ(IDE)์™€์˜ ํ˜ธํ™˜์„ฑ.
    1. ๋Œ€๊ทœ๋ชจ ํ˜‘์—… ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ ์ œ๊ณต.