Git & Github/๊ฐœ๋…

[Git & Github] ๊นƒ๊ณผ ๊นƒํ—ˆ๋ธŒ์— ๋Œ€ํ•ด์„œ

๊ฒฝํ‘ธ 2020. 7. 14. 23:05
๋ฐ˜์‘ํ˜•

 

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

 

๊นƒํ—ˆ๋ธŒ ์ด์ „์— ๊นƒ์ด๋ž€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด์ž.

 

GitLocal ๋‚ด์—์„œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฒน์ณ ์“ฐ์ง€ ์•Š๊ฒŒ ํ”„๋กœ์ ํŠธ์˜ ๋ณ€๊ฒฝ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ ์†Œํ”„ํŠธ์›จ์–ด

Github : Local์—์„œ ๊ด€๋ฆฌํ•œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์—…๋กœ๋“œํ•˜๊ณ  ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์„ ๋งํ•œ๋‹ค. ๊นƒ์„ ๋ฐฐ์šฐ์ง€ ์•Š๊ณ  ๊นƒํ—ˆ๋ธŒ๋ฅผ ์ด์šฉํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ๊ทธ ๊ฐ€์น˜๋ฅผ ์ถฉ๋ถ„ํžˆ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•œ๋‹ค.

 

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

 

๊ทธ๋ ‡๋‹ค๋ฉด ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ณธ์ ์ธ ์šฉ์–ด๋“ค์„ ์•Œ์•„๋ณด์ž.

 

1. ์ปค๋งจ๋“œ ๋ผ์ธ(Command Line) : ๊นƒ์˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ์„œ ๋ฆฌ๋ˆ…์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ํ„ฐ๋ฏธ๋„์„ ํ†ตํ•ด ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๋งˆ์šฐ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

 

2. ์ €์žฅ์†Œ(Repository): Repo๋ผ๊ณ  ์ค„์—ฌ์„œ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•˜๋ฉฐ ์•ž์„œ ๋งํ•œ ๋กœ์ปฌ ์ €์žฅ์†Œ์™€ ๋”๋ถˆ์–ด ๊นƒํ—ˆ๋ธŒ์™€ ๊ฐ™์€ ์˜จ๋ผ์ธ ํ˜ธ์ŠคํŠธ์˜ ์ €์žฅ๊ณต๊ฐ„ ๋˜ํ•œ ๋‘๋ฃจ์–ด ๋งํ•œ๋‹ค. ์ฆ‰, ํ”„๋กœ์ ํŠธ๋‚˜ ์ฝ”๋“œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋‚˜ ์ €์žฅ ๊ณต๊ฐ„์„ ๋งํ•œ๋‹ค.

 

3. ์ปค๋ฐ‹(Commit) : ๊นƒ์—๊ฒŒ ์žˆ์–ด์„œ ์ค‘์š”ํ•œ ๋ช…๋ น์–ด ์ค‘ ํ•˜๋‚˜. ํ”„๋กœ์ ํŠธ๋‚˜ ์ฝ”๋“œ๋ฅผ ์ปค๋ฐ‹ํ•˜๋ฉด ๊ทธ ์‹œ์ ์˜ ์šฐ๋ฆฌ์˜ ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ์Šค๋ƒ…์ƒท์„ ์ฐ์–ด๋‘์–ด ์–ธ์ œ๋‚˜ ์ด์ „์˜ ์ƒํƒœ๋กœ์˜ ๋ณต์›์ด๋‚˜ ์žฌํ™•์ธ์ด ๊ฐ€๋Šฅํ•œ ์ง€์ ์„ ๋งŒ๋“ค์–ด์ค€๋‹ค.

 

4. ๋ธŒ๋žœ์น˜(Branch) : ์—ฌ๋Ÿฌ ๋ช…์ด์„œ ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•  ๋•Œ  ๋ธŒ๋žœ์น˜๋ผ๋Š” ๊ฐœ๋…์ด ํ•„์š”ํ•˜๋‹ค. ๋ฉ”์ธ ํ”„๋กœ์ ํŠธ์˜ ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€์ง€๊ณ  ์™€์„œ(Branch off) ์ˆ˜์ • - ์ถ”๊ฐ€ - ์‚ญ์ œ ๋“ฑ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ด๋ฅผ ๋ฉ”์ธ ๋””๋ ‰ํ„ฐ๋ฆฌ(Master)์— ๋‹ค์‹œ ํ•ฉ๋ณ‘(Merge)ํ•จ์œผ๋กœ์จ ๊ณต๋™์œผ๋กœ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ค€๋‹ค. ์ด๋ ‡๊ฒŒ ๋ฟŒ๋ฆฌ๋ฅผ ๋‘๊ณ  ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ๊ฐ€์ง€๋ฅผ ๋ถ™์˜€๋‹ค ๋„์–ด๋ƒˆ๋‹ค ํ•˜๋ฉด์„œ ํ•˜๋‚˜์˜ ๋‚˜๋ฌด๋ฅผ ๋งŒ๋“ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ข‹๋‹ค. 

 

  • Master - ๋‚˜๋ฌด๋กœ ์น˜๋ฉด ๋ฟŒ๋ฆฌ์— ํ•ด๋‹นํ•˜๋Š” ๋ชจ๋“  ์ž‘์—…์˜ ์ค‘์‹ฌ.
  • Merge -  Branch๋ฅผ Master์— ํ•ฉ๋ณ‘ํ•˜๋Š” ๊ฒƒ. ๋‚˜๋ฌด์— ์—†๋˜ ๊ฐ€์ง€๋ฅผ ๋ถ™์ด๋Š” ์ž‘์—…์ด๋ผ๊ณ  ์ƒ๊ฐ.

 

์ด์ œ ๊นƒ์˜ ๊ธฐ๋ณธ์ ์ธ ๋ช…๋ น์–ด๋„ ๋ช‡๊ฐ€์ง€ ์•Œ์•„๋ณด์ž.  (ํ„ฐ๋ฏธ๋„๊ณผ ๊ฐ™์€ ์ปค๋งจ๋“œ ๋ผ์ธ์„ ์‚ฌ์šฉํ• ๋•Œ)

 

๋ชจ๋‘ git์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

 

  • git init: ๊นƒ ์ €์žฅ์†Œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. ์ €์žฅ์†Œ๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์—์„œ ์ด ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ๊ทธ๋ƒฅ ์ผ๋ฐ˜ ํด๋”์ด์ง€๋งŒ ์ž…๋ ฅํ•œ ํ›„์— ์ถ”๊ฐ€์ ์ธ ๊นƒ ๋ช…๋ น์–ด๋“ค์„ ์ค„ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
  • git config: 'configure'์˜ ์ค„์ž„๋ง๋กœ์„œ ์ฒ˜์Œ์— ๊นƒ์„ ์„ค์ •ํ•  ๋•Œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.
  • git help: ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊นƒ ๋ช…๋ น์–ด๋“ค์ด ๋‚˜ํƒ€๋‚œ๋‹ค. ์ข€ ๋” ์ž์„ธํ•˜๊ฒŒ 'git help init'์ฒ˜๋Ÿผ ํŠน์ • ๊นƒ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์„ค์ •ํ•˜๋Š” ๋ฒ•์„ ์ดํ•ดํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
  • git status: ์ €์žฅ์†Œ ์ƒํƒœ๋ฅผ ์ฒดํฌ. ์–ด๋–ค ํŒŒ์ผ์ด ์ €์žฅ์†Œ ์•ˆ์— ์žˆ๋Š”์ง€, ์ปค๋ฐ‹์ด ํ•„์š”ํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์žˆ๋Š”์ง€, ํ˜„์žฌ ์ €์žฅ์†Œ์˜ ์–ด๋–ค ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š”์ง€ ๋“ฑ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • git add: ์ €์žฅ์†Œ์— ์ƒˆ ํŒŒ์ผ๋“ค์„ ์ถ”๊ฐ€ํ•˜์ง„ ์•Š๋Š”๋‹ค. ๋‹ค๋งŒ ๊นƒ์ด ์ƒˆ ํŒŒ์ผ๋“ค์„ ์ง€์ผœ๋ณด๊ฒŒ ํ•œ๋‹ค. ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๋ฉด, ๊นƒ์˜ ์ €์žฅ์†Œ “์Šค๋ƒ…์ƒท”์— ํฌํ•จ๋œ๋‹ค.
  • git commit: ์–ด๋–ค ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด๋ผ๋„ ๋งŒ๋“  ํ›„, ์ €์žฅ์†Œ์˜ “์Šค๋ƒ…์ƒท”์„ ์ฐ๊ธฐ ์œ„ํ•ด ์ด๊ฒƒ์„ ์ž…๋ ฅํ•œ๋‹ค. ๋ณดํ†ต “git commit -m “Message” ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. '-m' ์€ ๋ช…๋ น์–ด์˜ ๊ทธ๋‹ค์Œ ๋ถ€๋ถ„์„ ๋ฉ”์‹œ์ง€๋กœ ์ฝ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.
  • git branch: ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค๊ณ , ์ž์‹ ๋งŒ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ๊ณผ ํŒŒ์ผ ์ถ”๊ฐ€ ๋“ฑ์˜ ์ปค๋ฐ‹ ํƒ€์ž„๋ผ์ธ์„ ๋งŒ๋“ ๋‹ค. ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ “cats”๋กœ ๋ถ€๋ฅด๊ณ  ์‹ถ์œผ๋ฉด, git branch cats๋กœ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.
  • git checkout: ๊ธ€์ž ๊ทธ๋Œ€๋กœ, ํ˜„์žฌ ์œ„์น˜ํ•˜๊ณ  ์žˆ์ง€ ์•Š์€ ์ €์žฅ์†Œ๋ฅผ “์ฒดํฌ์•„์›ƒ”ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ์€ ์ฒดํฌํ•˜๊ธธ ์›ํ•˜๋Š” ์ €์žฅ์†Œ๋กœ ์˜ฎ๊ฒจ๊ฐ€๊ฒŒ ํ•ด์ฃผ๋Š” ํƒ์ƒ‰ ๋ช…๋ น์ด๋‹ค. master ๋ธŒ๋žœ์น˜๋ฅผ ๋“ค์—ฌ๋‹ค๋ณด๊ณ  ์‹ถ์œผ๋ฉด, git checkout master๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , git checkout cats๋กœ ๋˜ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋ฅผ ๋“ค์—ฌ๋‹ค๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • git merge: ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…์„ ๋๋‚ด๊ณ , ๋ชจ๋“  ํ˜‘์—…์ž๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋Š” master ๋ธŒ๋žœ์น˜๋กœ ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์žˆ๋‹ค. git merge cats๋Š” “cats” ๋ธŒ๋žœ์น˜์—์„œ ๋งŒ๋“  ๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ master๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.
  • git push: ๋กœ์ปฌ ์ปดํ“จํ„ฐ์—์„œ ์ž‘์—…ํ•˜๊ณ  ๋‹น์‹ ์˜ ์ปค๋ฐ‹์„ ๊นƒํ—ˆ๋ธŒ์—์„œ ์˜จ๋ผ์ธ์œผ๋กœ๋„ ๋ณผ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๋ฉด, ์ด ๋ช…๋ น์–ด๋กœ ๊นƒํ—ˆ๋ธŒ์— ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ “push”ํ•œ๋‹ค.
  • git pull: ๋กœ์ปฌ ์ปดํ“จํ„ฐ์—์„œ ์ž‘์—…ํ•  ๋•Œ, ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š” ์ €์žฅ์†Œ์˜ ์ตœ์‹  ๋ฒ„์ „์„ ์›ํ•˜๋ฉด, ์ด ๋ช…๋ น์–ด๋กœ ๊นƒํ—ˆ๋ธŒ๋กœ๋ถ€ํ„ฐ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋‹ค์šด๋กœ๋“œํ•œ๋‹ค.
๋ฐ˜์‘ํ˜•