๐Ÿ— ๊ฐœ๋ฐœ์ž ๋˜๊ธฐ ์ฒซ ๋‹จ๊ณ„ : git๊ณผ github ๋ฟŒ์‹œ๊ธฐ ๐Ÿ”จ

์ œ๋ก ยท2022๋…„ 4์›” 3์ผ
3

git๊ณผ github

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

์ฒ˜์Œ๋ณด๋Š” git๊ณผ github

๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๋ ค๋ฉด git๊ณผ github๋ฅผ ์•Œ์•„์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์ˆ˜๋„ ์—†์ด ๋“ค์—ˆ๋‹ค.
๋น„์ „๊ณต์ž ์ž…์žฅ์—์„œ git๊ณผ github๋Š” ๊ฐ™์€ ๊ฑด๊ฐ€? ๋‹ค๋ฅด๋ฉด ๋ญ๊ฐ€ ๋‹ค๋ฅธ๊ฑฐ์ง€? ๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ์—ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋”ฐ๋กœ ์‹œ๊ฐ„๋‚ด์„œ ๊ณต๋ถ€ํ•ด์•ผํ•˜๋Š” ๊ฑด์ง€๋„ ๋ถˆ๋ช…ํ™•ํ–ˆ๋‹ค. ์•ˆ๊ทธ๋ž˜๋„ ๋ฐฑ์ง€์ƒํƒœ๋ผ ๊ณต๋ถ€ํ• ๊ฒŒ ๋งŽ์€๋ฐ...
์ƒˆ๋กœ์šด ๊ฐœ๋…์ด๋ผ ์—„์ฒญ ๋‚ฏ์„ค๊ธฐ๋„ ํ–ˆ๋‹ค. CLI์—์„œ ํŽผ์ณ์ง€๋Š” ์ˆ˜๋งŽ์€ log๋“ค์ด๋ž€...

๊ทธ๋ž˜๋„ git, github๋ฅผ ๊ณต๋ถ€ํ•ด๋ณด๋‹ˆ! ๊ฐœ๋ฐœ์ž ๊ณต๋ถ€ ์ดˆ๊ธฐ์— ํ•˜๋Š” ๊ฒƒ์ด ๋งž๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.
git์„ ๋ชฐ๋ž์œผ๋ฉด ๊ณต๋ถ€ํ•˜์ง€ ์•Š์•˜์œผ๋ฉด ๋‚˜์ค‘์— ์ •๋ง ํ•ด๋งธ์„ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ •๋ง ํŽธํ•˜๋‹ค. push ํ–ˆ์„ ๋•Œ ๋กœ์ปฌ์—์„œ ์ง€์›Œ์ ธ๋„ ์–ด๋”˜๊ฐ€ ๋‚˜์˜ ํŒŒ์ผ์ด ์ €์žฅ๋˜์–ด ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์ด ์•ˆ๋„๊ฐ์„ ์ค€๋‹ค. ๋˜ ๋‚ด๊ฐ€ ๋งŒ๋“  ์ฝ”๋“œ๋“ค์ด ์–ด๋”˜๊ฐ€์— ๊ธฐ๋ก๋˜์–ด ๊ฐ€๊ณ  ์ˆ˜์‹œ๋กœ ์—…๋ฐ์ดํŠธ๋ฅผ ์ž์œ ์ž์žฌ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์ด ๊ธฐ๋ก๋•ํ›„์ธ ๋‚˜์—๊ฒŒ ์•„์ฃผ ํฅ๋ฏธ๋กœ์› ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๋…ธํŠธ ์•ฑ์€ ๋…ธ์…˜์„ ์‚ฌ๋ž‘ํ•˜๋Š”๋ฐ ๋…ธ์…˜์€ ๊ณต์œ ํ•˜๊ธฐ๊ฐ€ ์• ๋งคํ•˜๋‹ค. ๊ณต์œ ํ•  ์ˆ˜๋Š” ์žˆ๋Š”๋ฐ ์ฉ ์ข‹์ง€ ์•Š๋‹ค. ๋ฐ˜๋ฉด ๊ฐœ๋ฐœ์ž๋ผ๋ฉด github๋Š” ๋ˆ„๊ตฌ๋‚˜ ์žˆ๊ณ  ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•„์ฃผ ์ข‹์€ ๊ธฐ๋ก์ˆ˜๋‹จ์ธ ๊ฒƒ ๊ฐ™๋‹ค.

๋‹ค๋งŒ git์€ ๋ญ”๊ฐ€ ๋”ฑ ๋ด๋„ ์–ด๋ ต๋‹ค. ๊ทธ๋ž˜์„œ ์ ‘๊ทผ์„ฑ์ด ๋†’์€๋ฐ ์ง์ ‘ ์น˜๋ฉด์„œ ๊ณต๋ถ€ํ•˜๋‹ˆ๊น ์–ด์ฐจํ”ผ ์“ฐ๋Š” ๋ช…๋ น์–ด๋“ค์€ ์ •ํ•ด์ ธ ์žˆ์–ด์„œ ๊ธˆ๋ฐฉ ์ตํž ์ˆ˜ ์žˆ์—ˆ๋‹ค. branch๋‚˜ git flow ๊ฐ™์€ ํ˜‘์—… ๊ด€๋ จ ๊ธฐ๋Šฅ์€ ์ข€ ์–ด๋ ค์› ์ง€๋งŒ.. ใ…Žใ…Ž

git๊ณผ github๋Š” ๋ญ๊ฐ€ ๋‹ค๋ฅด์ง€?

๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ git, github ์ด ๋‘˜์„ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
์‹ค์ œ๋กœ ์ œ๋Œ€๋กœ ์„ค๋ช…ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ฐ™์€ ๊ฑฐ๋ผ๋ฉด ๊ตณ์ด ์™œ ๋‚˜๋ˆ  ๋ถ€๋ฅด๊ฒ ๋Š”๊ฐ€.

git: ๋ถ„์‚ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ

ํŒŒ์ผ ๋ณ€ํ™”๋ฅผ ์‹œ๊ฐ„์— ๋”ฐ๋ผ ๊ธฐ๋กํ–ˆ๋‹ค๊ฐ€ ๋‚˜์ค‘์— ํŠน์ • ์‹œ์ ์˜ ๋ฒ„์ „์„ ๋‹ค์‹œ ๊บผ๋‚ด์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ.

* ๋ถ„์‚ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ?
์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์ง€๋ง‰ ํŒŒ์ผ์˜ ์Šค๋ƒ…์ƒท์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ทธ๋ƒฅ ์ €์žฅ์†Œ๋ฅผ ํžˆ์Šคํ† ๋ฆฌ์™€ ๋”๋ถˆ์–ด ์ „๋ถ€ ๋ณต์ œํ•œ๋‹ค.

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

์ฝ”๋“œ๋ฅผ ์“ฐ๋‹ค๋ณด๋ฉด ๋””๋ฒ„๊น…์„ ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ • ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธ ํ•ด์•ผํ•˜๋Š” ์ผ๋“ค์ด ์ƒ๊ธด๋‹ค. ์ด๋Ÿด ๋•Œ git์„ ์‚ฌ์šฉํ•˜๋ฉด ํšจ์œจ์ ์œผ๋กœ ๋ชจ๋“  ๊ณผ์ •์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ํ˜‘์—…์„ ํ•˜๊ฑฐ๋‚˜ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๋™์‹œ์— ๊ฐœ๋ฐœํ•  ๋•Œ๋„ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ธ๋‹ค.

cli์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋‚˜ ๋‹ค์–‘ํ•œ gui ์„œ๋น„์Šค๋„ ์กด์žฌํ•œ๋‹ค. (i.e Kraken, github desktop, Source Tree ๋“ฑ)

github: ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ git ์ €์žฅ์†Œ ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค

git์—์„œ ์‹ค์‹œํ•œ ํŒŒ์ผ๋“ค์„ remote ์ €์žฅ์†Œ์ธ github์— ์ €์žฅํ•˜๊ณ  ๋ฐฐํฌํ•˜๊ณ  ๊ธฐ๋กํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋“ค์ด ์ž์œ ๋กญ๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์ธ github๋ฅผ ๋งŽ์ด ์ผ๊ณ  ์œ ๋ช…ํ•ด์กŒ๋‹ค. ์‚ฌ์šฉ์ž ์นœํ™”์ ์ด๊ณ  ๋‹ค์–‘ํ•˜๊ฒŒ ํ™œ์šฉ๊ฐ€๋Šฅํ•ด์„œ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ํ•„์ˆ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

git ์‚ฌ์šฉ๋ฒ•

git์ด ๋™์ž‘ํ•˜๋Š” ๊ณผ์ •

๋‚ด ์ปดํ“จํ„ฐ์ธ local์—์„œ ํŒŒ์ผ์„ ์›๊ฒฉ์ €์žฅ์†Œ์ธ remote repo๋กœ ๋„˜๊ธฐ๋Š” ๊ณผ์ •์ด๋‹ค.

์ž‘์—…ํ•œ ํŒŒ์ผ์„ $ git add ํ•˜๋ฉด ๋ณด๋‚ผ ์ค€๋น„๋ฅผ ํ•˜๊ณ  $ git commit์„ ํ•˜๋ฉด local repo์— ์ €์žฅ๋œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ $ git push๋Š” remote repo๋กœ ๋„˜๊ฒจ์ค€๋‹ค.

๋‹น์—ฐํžˆ ๋ฐ˜๋Œ€๋กœ $ git pull์„ ํ•œ๋‹ค๋ฉด ์›๊ฒฉ์ €์žฅ์†Œ์— ์žˆ๋Š” ํŒŒ์ผ์„ ๋„˜๊ฒจ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

$ git checkout์€ commit, add๋ฅผ ์ทจ์†Œํ•˜๋Š” ๋ช…๋ น์–ด์ธ๋ฐ ๋’ค์—์„œ ๋‹ค๋ฃฐ ๊ฒƒ์ด๋‹ค.

์„ธ๊ฐ€์ง€ ์ƒํƒœ

  • Modified: ์ˆ˜์ •ํ•œ ํŒŒ์ผ์„ ์•„์ง ๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ปค๋ฐ‹ํ•˜์ง€ ์•Š์€ ์ƒํƒœ / $ git add ์ „ ์ƒํƒœ

  • Staged: ํ˜„์žฌ ์ˆ˜์ •ํ•œ ํŒŒ์ผ์„ ๊ณง ์ปค๋ฐ‹ํ•  ๊ฒƒ์ด๋ผ๊ณ  ํ‘œ์‹œํ•œ ์ƒํƒœ / $ git add ํ•œ ์ƒํƒœ

  • Committed: ๋ฐ์ดํ„ฐ๊ฐ€ ๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅ๋จ์„ ์˜๋ฏธ / $ git commit ํ•œ ์ƒํƒœ

์ฒ˜์Œ ๋ฐฐ์šฐ๋”๋ผ๋„ git์€ cli์—์„œ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
์™œ๋ƒํ•˜๋ฉด...

  • cli๋กœ ๋ฐฐ์šฐ๋ฉด gui๋Š” ๊ปŒ์ด๋‹ค.
  • cli๊ฐ€ ํ›จ์”ฌ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ด๋‹ค.
  • cli๊ฐ€ ๋” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • gui ๋ณด๋‹ค ์ด์˜์ง€๋Š” ์•Š์ง€๋งŒ ๊ฐ„์ง€๊ฐ€ ๋‚œ๋‹ค..!๐Ÿ˜Ž

git์˜ ๊ธฐ๋ณธ์ ์ธ ๋ช…๋ น์–ด

  • git init: git์„ ์‹œ์ž‘ํ•จ. => .git์ด๋ผ๋Š” directory๊ฐ€ ์ƒ์„ฑ๋จ(.git์•ˆ์—๋Š” git๋ฒ„์ „์ •๋ณด์™€ remote ์ฃผ์†Œ๊ฐ€ ์žˆ์Œ)

  • git add: git์ด ๊ด€๋ฆฌํ•  ๋Œ€์ƒ์˜ ํŒŒ์ผ ๋“ฑ๋กํ•˜๊ธฐ

  • git commit: ๋ฐ์ดํ„ฐ๊ฐ€ ๋กœ์ปฌ์ €์žฅ์†Œ์— ์ €์žฅ๋จ

  • git push: ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์›๊ฒฉ์ €์žฅ์†Œ์— ์ „๋‹ฌ

  • git status: ํ˜„์žฌ ์ƒํƒœํ™•์ธ. ํŒŒ์ผ์ด ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜, addํ•œ ๊ฒƒ์ด ์žˆ๊ฑฐ๋‚˜, commitํ•  ๊ฒƒ์ด ์žˆ๋Š”์ง€ ์•Œ๋ ค์คŒ.

์ด์ƒ git์˜ ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ์„ ์•Œ์•„๋ณด์•˜๋‹ค. ์‚ฌ์‹ค ์ด๋ ‡๊ฒŒ ์„ค๋ช…์œผ๋กœ๋œ ๊ธ€์„ ์ฝ๋Š” ๊ฒƒ ๋ณด๋‹ค ์ง์ ‘ ํƒ€์ดํ•‘ ํ•˜๋ฉด์„œ ์ตํžˆ๋Š”๊ฒŒ ๊ฐ€์žฅ ์ข‹๋‹ค. "๋ฐฑ๋ฌธ์ด ๋ถˆ์–ด์ผํƒ€!"

๋‹ค์Œ์—” ๋” ์‹ค์šฉ์ ์ด ๋‚ด์šฉ์„ ์ž‘์„ฑํ•ด๋ณผ ์ƒ๊ฐ์ด๋‹ค.

์ด์ƒ ๊ฐœ๋ฐœ์ž์ง€๋ง์ƒ์ด ์ •๋ฆฌํ•ด๋ณธ git์˜ ๋ฟŒ์‹œ๊ธฐ ๋งˆ๋ฌด๋ฆฌํ•œ๋‹ค..!!๐Ÿ“•
(์ง์ ‘ ํ•ด๋ณด๋ฉด์„œ ๋‚ด๊ฐ€ ๋ฟŒ์…”์ง€๊ธด ํ–ˆ๋‹ค.. ใ…‹ใ…‹)

profile
Software Developer

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