git ๊ธฐ์ดˆ ๐Ÿค”

Jaedupยท2023๋…„ 6์›” 1์ผ

git

๋ชฉ๋ก ๋ณด๊ธฐ
1/1

๋กœ์ปฌ(local) ์ €์žฅ์†Œ์™€ ์›๊ฒฉ(remote) ์ €์žฅ์†Œ

๋กœ์ปฌ ์ €์žฅ์†Œ

  • ์‚ฌ์šฉ์ž์˜ ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์ €์žฅ๋œ git ์ €์žฅ์†Œ
  • ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ, ์Šคํ…Œ์ด์ง• ์˜์—ญ, ์ปค๋ฐ‹๋œ ๋ฒ„์ „์˜ ์—ญ์‚ฌ๋ฅผ ํฌํ•จ
  • ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ, ์Šคํ…Œ์ด์ง• ์˜์—ญ ๋“ฑ์„ ํฌํ•จ
    • ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ
      • ํ”„๋กœ์ ํŠธ ์‹ค์ œ ํŒŒ์ผ๋“ค์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ
      • ๊ฐœ๋ฐœ์ž๊ฐ€ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ณ  ์ƒˆ๋กœ์šด ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ณต๊ฐ„
    • ์Šคํ…Œ์ด์ง• ์˜์—ญ
      • ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ค‘ ๋‹ค์Œ ์ปค๋ฐ‹์— ํฌํ•จ๋  ํŒŒ์ผ๋“ค์„ ์„ ํƒ์ ์œผ๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ๊ณต๊ฐ„
      • ์ปค๋ฐ‹ํ•˜๊ธฐ ์ „์— ์–ด๋–ค ํŒŒ์ผ์„ ํฌํ•จ์‹œํ‚ฌ์ง€ ์„ ํƒํ•˜๋Š” ์ค‘๊ฐ„ ๋‹จ๊ณ„

์›๊ฒฉ ์ €์žฅ์†Œ

  • ๋„คํŠธ์›Œํฌ ์ƒ์˜ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ๋‚˜ ์„œ๋ฒ„์— ์œ„์น˜ํ•œ git ์ €์žฅ์†Œ
  • ๋กœ์ปฌ ์ €์žฅ์†Œ์™€ ํ˜‘์—…ํ•˜๊ฑฐ๋‚˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐฑ์—… ๋ฐ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ
  • ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ pushํ•˜๊ฑฐ๋‚˜ pullํ•ด์„œ ๋ฒ„์ „์„ ๋™๊ธฐํ™” ํ•  ์ˆ˜ ์žˆ์Œ
  • GitHub, GitLab๋“ฑ ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ์ œ๊ณต
  • ํ•œ ํ”„๋กœ์ ํŠธ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์›๊ฒฉ ์ €์žฅ์†Œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ

๋กœ์ปฌ โ†’ ์›๊ฒฉ (add, commit, push)

add โ†’ commit โ†’ push ๋ช…๋ น์ด ์ฐจ๋ก€๋กœ ์‹คํ–‰๋˜์–ด์•ผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋กœ์ปฌ ์ €์žฅ์†Œ์—์„œ ์›๊ฒฉ ์ €์žฅ์†Œ๋กœ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

add

  • ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ค‘ ๋‹ค์Œ ์ปค๋ฐ‹์— ํฌํ•จ๋  ํŒŒ์ผ๋“ค์„ ์Šคํ…Œ์ด์ง• ์˜์—ญ์— ์ถ”๊ฐ€
$ git add <ํŒŒ์ผ๋ช…>  # ํŠน์ • ํŒŒ์ผ์„ ์Šคํ…Œ์ด์ง• ์˜์—ญ์— ์ถ”๊ฐ€
$ git add .       # ๋ณ€๊ฒฝ๋œ ๋ชจ๋“  ํŒŒ์ผ์„ ์Šคํ…Œ์ด์ง• ์˜์—ญ์— ์ถ”๊ฐ€
$ git add --all   # git add . ๊ณผ ๋™์ผํ•œ ํšจ๊ณผ

commit

  • ์Šคํ…Œ์ด์ง• ์˜์—ญ์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ €์žฅ์†Œ์— ์˜๊ตฌ์ ์œผ๋กœ ๊ธฐ๋ก
  • ํ”„๋กœ์ ํŠธ์˜ ๋ฒ„์ „ ์ด๋ ฅ ํ˜•์„ฑ
$ git commit -m "commit message" # ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ์Šคํ…Œ์ด์ง€ ์˜์—ญ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ปค๋ฐ‹

push

  • ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์›๊ฒฉ ์ €์žฅ์†Œ๋กœ ์—…๋กœ๋“œ
  • ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž์™€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ณต์œ ํ•˜๊ณ  ๋™๊ธฐํ™”ํ•˜๋Š” ์—ญํ• 
$ git push <์›๊ฒฉ ์ €์žฅ์†Œ ์ด๋ฆ„> <๋กœ์ปฌ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„>:<์›๊ฒฉ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„>
# <์›๊ฒฉ ์ €์žฅ์†Œ ์ด๋ฆ„>์€ pushํ•  ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์ด๋ฆ„, <๋กœ์ปฌ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„>์€ pushํ•  ๋กœ์ปฌ ๋ธŒ๋žœ์น˜์˜ ์ด๋ฆ„, <์›๊ฒฉ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„>์€ ์›๊ฒฉ ์ €์žฅ์†Œ์— ์ƒ์„ฑ๋˜๋Š” ๋ธŒ๋žœ์น˜์˜ ์ด๋ฆ„
$ git push origin main 
# ํ˜„์žฌ ๋กœ์ปฌ ๋ธŒ๋žœ์น˜์ธ 'main'์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ 'origin'์ด๋ผ๋Š” ์›๊ฒฉ ์ €์žฅ์†Œ์— push
# '๋กœ์ปฌ ์ €์žฅ์†Œ'์˜ main ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹๋“ค์„ '์›๊ฒฉ ์ €์žฅ์†Œ'์˜ main ๋ธŒ๋žœ์น˜์— ์—…๋กœ๋“œ
๐Ÿ’ก add์™€ commit๋ฅผ ํ•œ ๋’ค์— push๋ฅผ ํ•˜์ง€ ์•Š์œผ๋ฉด, ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋กœ์ปฌ ์ €์žฅ์†Œ์—๋งŒ ๊ธฐ๋ก๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ณผ ์ˆ˜ ์—†๋‹ค.

์›๊ฒฉ โ†’ ๋กœ์ปฌ (fetch , merge, pull)

fetch โ†’ merge ๋ช…๋ น์„ ํ†ตํ•ด ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋ฐ˜์˜ํ•˜๊ฑฐ๋‚˜, pull ๋ช…๋ น์„ ํ†ตํ•ด fetch์™€ merge๋ฅผ ํ•œ ๋ฒˆ์— ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ๋‹ค.

fetch

  • ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ€์ ธ์™€ ๋กœ์ปฌ ์ €์žฅ์†Œ๋ฅผ ์—…๋ฐ์ดํŠธ
  • ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ์ตœ์‹  ์ปค๋ฐ‹๋“ค์„ ๋‹ค์šด๋กœ๋“œ ํ•˜์—ฌ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์ €์žฅํ•˜์ง€๋งŒ, ๋ณ‘ํ•ฉ์€ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Œ
$ git fetch                  # ๋ชจ๋“  ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ€์ ธ์˜ด
$ git fetch <์›๊ฒฉ ์ €์žฅ์†Œ ์ด๋ฆ„>   # ํŠน์ • ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ๋ณ€๊ฒฉ ์‚ฌํ•ญ์„ ๊ฐ€์ ธ์˜ด

merge

  • ๋‘ ๊ฐœ์˜ ๋ธŒ๋žœ์น˜๋ฅผ ๋ณ‘ํ•ฉํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ช…๋ น์–ด
  • ์ฃผ๋กœ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ˜„์žฌ ๋ธŒ๋žœ์น˜์— ํ†ตํ•ฉํ•˜๊ฑฐ๋‚˜, ํŠน์ • ๋ธŒ๋žœ์น˜๋ฅผ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์™€ ํ•ฉ์น˜๋Š” ๋ฐ์— ์‚ฌ์šฉ
$ git merge <๋กœ์ปฌ ๋ธŒ๋žœ์น˜> # ํ˜„์žฌ ์œ„์น˜ํ•œ ๋ธŒ๋žœ์น˜์— ํŠน์ • ๋กœ์ปฌ ๋ธŒ๋žœ์น˜๋ฅผ ๋ณ‘ํ•ฉ

merge ์˜ˆ์‹œ)
$ git checkout master # master ๋ธŒ๋žœ์น˜๋กœ ์ด๋™
$ git merge feature   # feature ๋ธŒ๋žœ์น˜๋ฅผ master ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉ

pull

  • ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ€์ ธ์™€์„œ ๋กœ์ปฌ ์ €์žฅ์†Œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋™์‹œ์— ๋ณ‘ํ•ฉ
$ git pull             # ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ€์ ธ์™€์„œ ๋กœ์ปฌ ์ €์žฅ์†Œ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๋™์‹œ์— ๋ณ‘ํ•ฉ
$ git pull <์›๊ฒฉ ์ €์žฅ์†Œ ์ด๋ฆ„> <์›๊ฒฉ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„> # ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์›๊ฒฉ ๋ธŒ๋žœ์น˜์—์„œ ์ตœ์‹  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ€์ ธ์™€ ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ๋ธŒ๋žœ์น˜์™€ ๋ณ‘ํ•ฉ

Pull Request

  • ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ฒ€ํ† ํ•˜๊ณ  ํ†ตํ•ฉ์„ ์š”์ฒญํ•˜๋Š” ๊ธฐ๋Šฅ
  • ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ฝ”๋“œ ๋ฆฌ๋ทฐํ•  ์ˆ˜ ์žˆ์Œ
  • ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ merge๋ฅผ ํ•˜๊ธฐ ์ „์— ์ˆ˜ํ–‰ํ•˜๋Š” ๊ณผ์ •
  • ์ฃผ๋กœ ์›๊ฒฉ ์ €์žฅ์†Œ ํ˜ธ์ŠคํŒ… ํ”Œ๋žซํผ์—์„œ ์ˆ˜ํ–‰

์ˆ˜ํ–‰ ๊ณผ์ •

  1. ์ž‘์—… ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ : ๊ธฐ์กด์˜ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝ ํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ๋ฐ ์ž‘์—…
  2. ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ปค๋ฐ‹ : ๋กœ์ปฌ์—์„œ ์ž‘์—…ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ปค๋ฐ‹, ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ์„ค๋ช… ์ž‘์„ฑ
  3. ์›๊ฒฉ ์ €์žฅ์†Œ๋กœ push : ์ž‘์—…ํ•œ ๋ธŒ๋žœ์น˜์˜ ๋‚ด์šฉ์„ ์›๊ฒฉ ์ €์žฅ์†Œ๋กœ push
  4. Pull Request ์ƒ์„ฑ : ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ Pull Request ์ƒ์„ฑ
  5. ์ฝ”๋“œ ๋ฆฌ๋ทฐ : Pull Request๋ฅผ ๋ฐ›์€ ์†Œ์œ ์ž๋‚˜ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฒ€ํ† ํ•˜๊ณ  ์˜๊ฒฌ ์ œ์‹œ
  6. ๋ณ€๊ฒฝ ์‚ฌํ•ญ ํ†ตํ•ฉ : ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋Œ€์ƒ ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉ(merge)

0๊ฐœ์˜ ๋Œ“๊ธ€