๐Ÿ’ก Git & Github - ๋ช…๋ น์–ด์™€ workflow ์•Œ์•„๋ณด๊ธฐ

Hi! I'm JENNIEยท2022๋…„ 6์›” 29์ผ
0

TIL : ๊ธฐ๋ก

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

1. Git์ด๋ž€?

: Version Control System ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ; ์ˆ˜์ •์ด๋ ฅ๊ด€๋ฆฌ

Version

: Update(์ˆ˜์ •)๊ฐ€ ์ผ์–ด๋‚œ ํ•œ term.

๊ฒฐ๊ณผ๋ณด๊ณ ์„œ - ver.1
๊ฒฐ๊ณผ๋ณด๊ณ ์„œ_์ตœ์ข… - ver.2
๊ฒฐ๊ณผ๋ณด๊ณ ์„œ_์ตœ์ตœ์ข… - ver. 3
๊ฒฐ๊ณผ๋ณด๊ณ ์„œ_์ง„์งœ์ตœ์ข…
๊ฒฐ๊ณผ๋ณด๊ณ ์„œ_์ฐ๋ง‰์ง„์งœ์ง„์งœ์ง„์งœ์ตœ์ข…
.
.

์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์˜ ๋ฌธ์ œ์  ?

  1. ํ•ด๋‹น ๋‹จ๊ณ„์—์„œ ์ˆ˜์ •๋œ ๋‚ด์šฉ์„ ์•Œ๊ธฐ ์–ด๋ ต๋‹ค

  2. ์ž‘์„ฑ์ž ๋ณธ์ธ๋งŒ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค

    โ†’ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ๊ณต์œ ํ•˜๊ธฐ ์–ด๋ ต๋‹ค

  3. ๋ฌผ๋ฆฌ์ ์ธ ํŒŒ์ผ์ด ๊ณ„์† ์ƒ์„ฑ๋˜์–ด ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ต๋‹ค

    โ†’ ์ˆ˜์ •๋ณธ๋งˆ๋‹ค ๋‹ค ์›๋ณธ์ด๊ธฐ ๋•Œ๋ฌธ์— ์œ ์‹ค์˜ ์œ„ํ—˜์ด ์žˆ๋‹ค

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•„์š”ํ•œ ๊ฒƒ์ด ๋ฒ„์ „๊ด€๋ฆฌ์‹œ์Šคํ…œ โ†’ Git
git ์ด์™ธ์—๋„ ๋‹ค์–‘ํ•œ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด ์žˆ์ง€๋งŒ git์ด ๊ฐ€์žฅ ์œ ๋ช…ํ•˜๊ณ  ๋„๋ฆฌ ์“ฐ์ธ๋‹ค.

์ฝ”๋“œ ๋ฒ„์ „๊ด€๋ฆฌ๋ฅผ ํ•˜๋Š” ์ด์œ  ?

  1. ์ˆ˜์ •ํ•  ๋•Œ๋งˆ๋‹ค ํŒŒ์ผ์„ ์ƒˆ๋กœ ๋งŒ๋“ค๋ฉด ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ
  2. ์ด์ „ ๋ฒ„์ „์˜ ์ฝ”๋“œ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ
  3. ์ด๋ ฅ์„ ๋‚จ๊ธฐ๊ธฐ ์œ„ํ•ด
  4. ์—ฌ๋Ÿฌ๋ช…์ด ํ˜‘์—…ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ

2. Git vs Github

Github

[ Github ๋งˆ์Šค์ฝ”ํŠธ : ์˜ฅํ† (Octopus)+์บฃ(Cat) ]

: ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž(์ฝ”๋“œ)๋ฅผ ์ž‡๋Š” hub์˜ ์˜๋ฏธ

  1. Git์„ ์ด์šฉํ•œ ํ”„๋กœ์ ํŠธ ์ €์žฅ์†Œ
  2. ๊ฐœ๋ฐœ์ž๋“ค์˜ Social Network

๐Ÿ’ก Git - ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ โ†’ ํ”„๋กœ๊ทธ๋žจ
Github - Git์„ ์ด์šฉํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค ํ”Œ๋žซํผ โ†’ ๊ณต๊ฐ„

3. Git ๋ช…๋ น์–ด

1) init

: git์˜ ์‹œ์ž‘. ์ด ํด๋”์—์„œ ๋ฒ„์ „๊ด€๋ฆฌ๋ฅผ ์‹œ์ž‘ํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ. โœ…ย ์œ„์น˜์ถ”์ ๊ธฐ ์‹ฌ๊ธฐ

2) status

: git addํ•  ๋‚ด์šฉ์ด ์žˆ๋Š”์ง€, ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ๋Š”์ง€ ํ˜„์žฌ ์ƒํƒœํ™•์ธ

3) add

: ํŒŒ์ผ ์ˆ˜์ • ์ด๋ ฅ ๊ธฐ๋ก์„ ์ค€๋น„ํ•จ - commit์„ ์œ„ํ•œ ์ค€๋น„ (์Šคํ…Œ์ด์ง•; ์ค‘๊ฐ„์ €์žฅ) โœ…ย ์žฅ๋ฐ”๊ตฌ๋‹ˆ

  • git add . โ†’ ์ „์ฒด ํŒŒ์ผ add
  • git add โ€œminjee.mdโ€ โ†’ ํ•ด๋‹น ํŒŒ์ผ๋งŒ add

4) commit

: ์‹ค์ œ ํŒŒ์ผ์„ ์ €์žฅ์†Œ์— ๊ธฐ๋ก. git์— ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ. โœ…ย ๊ฒฐ์ œ

๋ฐ”๋กœ commit ํ•˜๋Š” ๊ฒƒ X add๋ฅผ ๊ผญ ์˜ฌ๋ฆฌ๊ณ  ๋‚œ ํ›„ commitํ•  ์ˆ˜ ์žˆ๋‹ค.

  • git commit -m โ€œ์ปค๋ฐ‹๋‚ด์šฉ์ž…๋ ฅโ€

5) log

: commit์ด ์ž˜ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
git์— commit๋œ ๊ฐ ๋ฒ„์ „๋“ค์˜ ์ฃผ์†Œ์™€ ๊ธฐ๋ก์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค

โ†‘ git


โ†“ github

6) remote

: local-remote ์—ฐ๊ฒฐ ๋ฐ ์—ฐ๊ฒฐ ์ฃผ์†Œ ์ด๋ฆ„ ์„ค์ •

git remote add โ€œoriginโ€ โ€œgithub repository ์ฃผ์†Œโ€

โ†’ ๋‚ด git์— โ€œgithub repository ์ฃผ์†Œโ€๋ฅผ remote repository๋กœ ์—ฐ๊ฒฐํ•˜๊ณ , ๊ทธ ์ด๋ฆ„์„ origin์œผ๋กœ ํ•œ๋‹ค

7) push

: ์—ฐ๊ฒฐ๋œ remote repository๋กœ ํŒŒ์ผ์„ ์ „์†ก

git push origin master

โ†’ origin์˜ master branch์— ํŒŒ์ผ์„ ๋ณด๋‚ธ๋‹ค

  • git push -u origin master : ์•ž์œผ๋กœ push ํ•˜๋ฉด ๊ณ„์† origin master์— ํ• ๊ฑฐ๋‹ค
  • ์ดํ›„ โ†’ git push ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค!

๐Ÿ“ย ์ฒ˜์Œ, ํ™˜๊ฒฝ์„ ์„ธํŒ…ํ•˜๊ณ ๋‚˜๋ฉด ๊ฑฐ์˜ add > commit > push ๋งŒ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค

<๊ธฐ๋ณธ Linux ๋ช…๋ น์–ด>

  • pwd: ํ˜„์žฌ์œ„์น˜ํ™•์ธ
  • cd: ํ•ด๋‹น ๊ฒฝ๋กœ๋กœ ์ด๋™
  • mkdir: ํด๋” ์ƒ์„ฑ
  • ls -al: ํ•ด๋‹น ๊ฒฝ๋กœ์— ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ ๋ฆฌ์ŠคํŠธ ๋ณด๊ธฐ
  • touch: ํŒŒ์ผ ์ƒ์„ฑ
  • vi โ€œํŒŒ์ผ์ด๋ฆ„" : ํŒŒ์ผ์— ๋“ค์–ด๊ฐ€ ๋‚ด์šฉ ์ž…๋ ฅ ๋ฐ ์ˆ˜์ •
    • ์ €์žฅํ•˜๊ณ  ๋‚˜๊ฐ€๊ธฐ : ESCโ†’ shift+; โ†’ wq
  • cat : ํŒŒ์ผ ๋‚ด์šฉ ์ฝ๊ธฐ

4. Repository (์ €์žฅ์†Œ)

1) Local repository

: ๋‚ด ์ปดํ“จํ„ฐ์— ์ €์žฅ๋œ ๋กœ์ปฌ ์ €์žฅ์†Œ. ๋‚˜๋งŒ๋ณด์ž! (Git)

2) Remote repository

: ์™ธ๋ถ€์— ๊ณต์œ ๋œ ์ €์žฅ์†Œ. ๊ฐ™์ด๋ณด์ž! (Github)

5. Git Workflow

github์—์„œ clone ๋ฐ›์•„ ์ž‘์—… ์‹œ์ž‘ํ•˜๊ธฐ

  1. cd desktop(clone ๋ฐ›์„ ์œ„์น˜)
    โ†’ clone ๋ฐ›์„ ์œ„์น˜๋กœ ์ด๋™

  2. git clone "(clone ๋ฐ›์„ ์ฃผ์†Œ)"
    โ†’ Local์— Remote ํ•ด๋‹น repository์˜ ๋ชจ๋“  ํŒŒ์ผ์ด ๋ณต์‚ฌ๋จ!! โœ…

  3. master ์—์„œ๋Š” ์ง์ ‘ ์ˆ˜์ •, ์ž…๋ ฅ์€ ํ•˜์ง€ ์•Š์Œ โŒ
    โ†’ branch๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

  4. branch ์ƒ์„ฑ
    : git branch โ€œfeature/minjee(branch ์ด๋ฆ„)โ€

  5. ํ•ด๋‹น ๋ธŒ๋Ÿฐ์น˜๋กœ ์ด๋™
    : git checkout โ€œfeature/minjeeโ€

  6. ๋ธŒ๋Ÿฐ์น˜ ๋ฆฌ์ŠคํŠธ ๋ณด๊ธฐ

    : git branch

    ๊ฐœ๋ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค

  1. ADD(์Šคํ…Œ์ด์ง•)
    : git add .

  2. COMMIT
    : git commit -m "single line message"

    or

    git commit + EnterโŽ : multi line message

    ์ฒซ์ค„์€ PR(Pull Request์˜ ์ œ๋ชฉ์ด ๋˜๊ธฐ๋„ ํ•œ๋‹ค)

  3. PUSH
    : git push origin feature/minjee

  4. Pull Request (PR)
    : ์ฝ”๋“œ ๋ณด๊ณ ์„œ ์ž‘์„ฑ (Github์—์„œ)
    โ†’ ๋ณดํ†ต ์‚ฌ์ˆ˜, CTO ๋“ฑ ์ฝ”๋“œ๋ฆฌ๋ทฐ ํ•ด์ฃผ๋Š” ์‚ฌ๋žŒ์ด ๋ณธ๋‹ค

  5. MERGE
    : ๋‚ด ์ฝ”๋“œ๊ฐ€ ์™„์„ฑ๋ณธ์ด ๋˜๋ฉด Master์— ํ†ตํ•ฉ ํ•ด์ฃผ๋Š” ๊ฒƒ.

  6. PULL
    : ์•„์ง ์ˆ˜์ • ์ „ ์ƒํƒœ์ธ local์˜ master๋ฅผ ์ˆ˜์ • ํ›„ merge๋œ remote์˜ master์™€ ๊ฐ™๊ฒŒ ๋งž์ถฐ์ฃผ๋Š” ๊ฒƒ.


ํ›„... git ์–ด๋ ต๋‹คใ… _ใ… 
์ด๋ก ์œผ๋กœ๋งŒ ์ดํ•ดํ•˜๋ ค๊ณ  ํ•˜๊ณ , ์‹ค์ œ๋กœ ์•„์ง ๋งŽ์ด ์‚ฌ์šฉํ•ด๋ณด์ง€ ์•Š์•„์„œ ๋” ์–ด๋ ต๊ฒŒ ๋Š๊ปด์ง€๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋ฆฌ๊ณ  GUI github desktop์„ ์‚ฌ์šฉํ•ด ๋ฒ„๋ฆ‡ํ•ด์„œ CLI๊ฐ€ ๋” ๋ณต์žกํ•˜๊ฒŒ ๋Š๊ปด์ง€๋Š” ๋“ฏ ํ•˜๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‹ค๋ณด๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋งŽ์ด ์“ฐ๊ณ  ์ต์ˆ™ํ•ด์ง€๊ฒ ์ง€!!
๊ทธ๋ž˜๋„ ๊ทธ๋ƒฅ ๋ฒ„์ „๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์ €์žฅ์†Œ ์ •๋„๋กœ๋งŒ ์ƒ๊ฐํ•˜๋˜ git๊ณผ github์— ๋Œ€ํ•ด ๊ฐœ๋…์ด ์žกํžŒ ๊ฒƒ ๊ฐ™๋‹ค.
+) ๋ถ€ํŠธ์บ ํ”„์˜ ๊ณผ์ œ๋ฅผ ๋นจ๋ฆฌ ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๊ทธ๋‚  ๊ทธ๋‚  ๋ฐฐ์šด ๊ธฐ๋ณธ ๊ฐœ๋…์„ ๋จผ์ € ์ดํ•ดํ•˜๋Š” ๊ฒŒ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ๊ทธ๋Ÿฌ๋‹ค๋ณด๋‹ˆ ์ง„๋„๊ฐ€ ๋„ˆ๋ฌด ๋”๋””๋‹ค. ๊ฐœ๋…๋งŒ ๋จธ๋ฆฌ๋กœ ์ดํ•ดํ•˜๋ ค๊ณ  ํ•˜๋‹ˆ ๋” ์–ด๋ ค์›Œ์„œ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๋“ฏ ํ•˜๋‹ค. ๋ฉ˜ํ† ๋‹˜์˜ ์กฐ์–ธ์— ๋”ฐ๋ผ ์‹ค์ œ๋กœ ๊ณผ์ œ(์ฝ”๋”ฉ)๋ฅผ ํ•ด๋ณด๋ฉด์„œ ์–ด๋–ป๊ฒŒ ์“ฐ์ด๊ณ  ์–ด๋–ค๊ฒŒ ํŽธ๋ฆฌํ•œ์ง€ ๋ชธ์œผ๋กœ ์ฒด๋“ํ•˜์žฃ!!!๐Ÿ’ช๐Ÿป

profile
Front-End Developer

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