๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

"woowa-techcamp" ํƒœ๊ทธ๋กœ ์—ฐ๊ฒฐ๋œ 6๊ฐœ ๊ฒŒ์‹œ๋ฌผ๊ฐœ์˜ ๊ฒŒ์‹œ๋ฌผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ํƒœ๊ทธ ๋ณด๊ธฐ

ยท ์•ฝ 1๋ถ„

1. ํ˜„์žฅ ์ดํ•ดํ•˜๊ณ  ๋Œ€์‘ํ•˜๊ธฐ#

2. ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด์„œ JS์ตํžˆ๊ธฐ#

3. ํ–ฅ์ƒ๋œ UX๋ฅผ ๋ชฉํ‘œ๋กœ ๊ฐœ๋ฐœํ•˜๊ธฐ#

4. ํ•จ๊ป˜ ์ž๋ผ๊ธฐ#

  • ํ•จ๊ป˜ ํ•™์Šตํ•˜๊ธฐ

  • ๊ฐ„๋‹จํ•œ ํ”„๋กœ์ ํŠธ ํ•จ๊ป˜ ๋งŒ๋“ค์–ด๋ณด๊ธฐ

  • ํ”ผ๋“œ๋ฐฑ

  • ํ”ผ๊ณคํ•˜์ง€๋งŒ ํ•จ๊ป˜ ๋งž์ถฐ๋ณต

  • ์—…๋ฌด๋ฅผ ๋ถ„์„ํ•˜๊ณ  github issue/project๋กœ ์ผ๊ฐ ๋งŒ๋“ค์–ด์„œ ๊ด€๋ฆฌํ•˜๊ธฐ

  • PR ๋ณด๋‚ด๊ธฐ

  • ์ฝ”๋“œ๋ฆฌ๋ทฐ ํ•˜๊ธฐ

  • git branch ์ „๋žต์„ธ์›Œ๋ณด๊ธฐ

5. ๊ธฐ์ดˆ๋Š” ํŠผํŠผํ•˜๊ฒŒ#

  • ์ง€์†๊ฐ€๋Šฅํ•œ ๊ณต๋ถ€

  • TCP/IP๋ฅผ ํฌํ•จํ•œ HTTP ์ค‘์‹ฌ ๋„คํŠธ์›Œํฌ ๊ณต๋ถ€

  • ๋ฐฑ์—”๋“œ ์ ‘ํ•ด๋ณด๊ธฐ

6. HTML CSS์—์„œ FE์—”์ง€๋‹ˆ์–ด๋กœ#

ยท ์•ฝ 4๋ถ„

์ฝ”๋“œ๋ฆฌ๋ทฐ#

node ๋กœ ๋ฐฑ์—”๋“œ๋ฅผ ํ•˜๋‹ค๋ณด๋ฉด shared ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  ํ™˜๊ฒฝ์„ ์ž˜ ๊ฐ–์ถ”๊ณ  ๋ฐฑ๊ณผ ํ”„๋ก ํŠธ๊ฐ€ ๊ณต์œ ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.


  • HTML์€ ๊ตฌ์กฐ

    • p ํƒœ๊ทธ๋ฅผ ์“ธ ๋•Œ๋Š” paragraph์ธ์ง€

    • ๊ธ€์ž๋ฅผ ํฌ๊ฒŒํ•˜์ž ํ•˜๊ณ  h3๋ฅผ ์“ฐ๋ฉด ์•ˆ๋œ๋‹ค.

    • list ํƒœ๊ทธ โ†’ ๋‹ค์Œ ํ™ˆํŽ˜์ด์ง€์˜ ๋‰ด์Šค ๋ฆฌ์ŠคํŠธ

  • CSS๋Š” ์Šคํƒ€์ผ

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ#


CSS, JS๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒฝํ–ฅ

ํ˜„๋Œ€์˜ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ปดํฌ๋„ŒํŠธ ๋ณ„๋กœ, ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋ชจ์œผ๊ธฐ๋„ ํ•จ.

๊ฐœ๋ฐœํ•  ๋• ํ•ญ์ƒ ๋‚˜๋ˆ ์„œ

์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ํ•ญ์ƒ ๋ณ€๊ฒฝ๋œ๋‹ค๋Š” ๊ฐ€์ •์„ ํ•˜๊ณ  ๊ฐœ๋ฐœํ•˜๋ผ. ์„œ๋น„์Šค ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ์ด ๋œ๋‹ค.

์ข‹์€ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•, ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•œ ์ฝ”๋“œ. ๋ณ€๊ฒฝ์„ ํ–ˆ์„ ๋•Œ ๋‹ค๋ฅธ ์ฝ”๋“œ์— ์˜ํ–ฅ์„์ฃผ์ง€ ์•Š๋Š” ์ฝ”๋“œ

๋ณ€๊ฒฝ๋  ๋•Œ ์˜ํ–ฅ์„ ๋œ ์ฃผ๊ณ  ์ˆ˜์ •๋„ ์‰ฝ๊ฒŒ ๋˜๊ณ  ๊ธฐ๋Šฅ๋„ ์ถ”๊ฐ€๋˜๊ณ  ...

๋‚˜๋ˆ ์„œ ์—ญํ• ๋ณ„๋กœ

CSS ๊ณตํ†ต ๋ถ€๋ถ„ > Global, common ...

๋ชจ๋“  ๋ฆฌํŒฉํ† ๋ง์€ ์ค‘๋ณต๋ถ€ํ„ฐ

  • JS ํŒŒ์ผ ์ž์ฒด๋Š” ๋ชจ๋“ˆ์ด๊ธฐ ๋•Œ๋ฌธ์—, is ๋“ฑ์ด ๋“ค์–ด๊ฐ€๋ฉด ์–ด์ƒ‰ํ•ด๋ณด์ผ ์ˆ˜ ์žˆ๋‹ค.

๋งค์ง๋„˜๋ฒ„๋ฅผ ์—†์• ๋ผ - ์ฝ”๋“œ์—์„œ ์ˆซ์ž, ๋ฌธ์ž์—ด์„ ์“ธ ๋•Œ ๋ถ„๋ฆฌํ•ด๋ผ.

JS์—์„œ CSS๋ฅผ ์กฐ์ž‘ํ•  ์ผ์ด ์žˆ์„ ๋•Œ โ†’ classList์— remove, add, toggle ๋“ฑ์œผ๋กœ ์กฐ์ž‘ํ•œ๋‹ค. ์Šคํƒ€์ผ์„ ์ง์ ‘ ์กฐ์ž‘ํ•˜์ง€ ์•Š์Œ.

  • ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ

  • ๊ฐ€๋…์„ฑ์ด ์ข‹์€ ์ฝ”๋“œ

  • ํ…Œ์ŠคํŠธ๊ฐ€ ์‰ฌ์šด ์ฝ”๋“œ

  • ์—ญํ• ์ด ๋ช…ํ™•ํ•œ ํ•จ์ˆ˜

  • ์ ‘๊ทผํ•  ์ผ์ด ๋งŽ์œผ๋ฉด ๋ณ€์ˆ˜์— ๋‹ด์•„์„œ

  • ์ด๋ฒคํŠธ๋ฅผ ์–ด๋””์„œ ๋“ฑ๋กํ•ด์•ผ ํ• ๊นŒ?

  • ์กฐ๊ฑด๋„ ํ•จ์ˆ˜๋กœ ๋‚˜๋ˆ ๋ผ


์บ ํ”„์˜ ๋ชฉ์ #


  • ์–ด๋–ป๊ฒŒ ๋ชจ๋“ˆํ™”๋ฅผ ์ž˜ํ• ๊นŒ

  • ์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•œ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๊นŒ

  • ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์จ๋„ ๋ชจ๋“ˆํ™”๊ฐ€ ์ž๋™์œผ๋กœ ๋˜๋Š”๊ฒŒ ์•„๋‹ˆ๋‹ค

๋ณ€์ˆ˜๋ช…#

  • ์˜คํ”ˆ์†Œ์Šค๋ฅผ ์ž์ฃผ ๋ณด๋ฉด ๋„์›€์ด ๋œ๋‹ค.

  • ์ข‹์€ ํšŒ์‚ฌ๋ฉด ๋™์ž‘ํ•˜๋Š” ์„œ๋น„์Šค ์†Œ์Šค๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค


๋‚˜๋งŒ์˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ๋งŒ๋“ค์–ด๊ฐ€๋Š” ๊ฑธ ํ•ด๋ณด์„ธ์š”.

  • ํ•จ์ˆ˜๋ฅผ ๋ฒ”์šฉ์ ์œผ๋กœ

  • ์ธํ’‹์ด ์žˆ๊ณ  ์•„์›ƒํ’‹์ด ์žˆ๋Š” ๊ฒƒ์ด ํ…Œ์ŠคํŠธ๊ฐ€ ํŽธํ•œ ์ฝ”๋“œ

์ฐพ์•„๋ณด๊ธฐ#

  • setInterval ๋‹จ์ 

  • ์™œ setTimeout์„ ์žฌ๊ท€์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š”์ง€

  • ES ๋ชจ๋“ˆ


  • ๋ Œ๋”๋ง์„ ์ž์ฃผ ์ผ์œผํ‚ค์ง€ ๋ง์•„๋ผ

  • ํ•จ์ˆ˜๊ฐ€ ์งง์•„์„œ ์ข‹๋‹ค

  • ๊ณผ๋„ํ•  ์ •๋„๋กœ ๋‚˜๋ˆ„๋Š”๊ฒŒ ๋‚ซ๋‹ค


ES ๋ชจ๋“ˆ#

  • ํ”„๋ก ํŠธ์—์„œ๋„ import export๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ชจ๋“ˆ ๊ด€๋ฆฌ๋Š” ์˜์กด์„ฑ ๊ด€๋ฆฌ์ด๋‹ค.

util์€ ๋ฒ”์šฉ์„ฑ ์žˆ๋Š” ๊ฒƒ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๋ฌด๊ด€ํ•œ


๋ฐฑ์—”๋“œ์—์„œ ๋งค์ง๋„˜๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํฌ๋ฆฌํ‹ฐ์ปฌํ•œ ์ด์Šˆ๊ฐ€ ์ƒ๊ธด๋‹ค.

ํšŒ์›๊ฐ€์ž… ๋กœ๊ทธ์ธ

โ†’ ํด๋ผ์ด์–ธํŠธ์—์„œ validation, ์„œ๋ฒ„์—์„œ validation์„ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.


๋„๊ตฌ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์จ์•ผํ•œ๋‹ค.

aspective-oriented programming#


์‹ค์ œ๋กœ ์ค‘์š”ํ•œ๊ฑด ์œ ์ง€ ๋ณด์ˆ˜, hotfix๊ฐ€ ์ž์ฃผ ์ผ์–ด๋‚œ๋‹ค.


ยท ์•ฝ 3๋ถ„

ํŒ€ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด...#

์Šคํ”„๋ฆฐํŠธ ํšŒ์˜#

  • ํŒ€์˜ ๋ชฉํ‘œ ์ˆ˜๋ฆฝ, ์œ„ํ‚ค ๋“ฑ๋ก

  • ๊ฐœ๋ฐœํ•ด์•ผ ํ•  ๋‚ด์šฉ์„ feature ๋‹จ์œ„๋กœ ์ถ”๋ฆฌ๊ณ  issue ํ•ญ๋ชฉ์— ๋“ฑ๋ก

์Šคํฌ๋Ÿผ#

  • ์ƒํƒœ, ์–ด์ œ ํ•œ ์ผ, ์˜ค๋Š˜ ํ•œ ์ผ์„ 5๋ถ„ ๋‚ด๋กœ ์งง๊ฒŒ ์ด์•ผ๊ธฐ

  • ์„œ๋กœ์˜ ๊ฑด๊ฐ•, ์‹ฌ๋ฆฌ, ๊ฐœ๋ฐœ ์ง„ํ–‰ ์ƒํƒœ๋ฅผ ๋‚˜๋ˆ„๊ณ  ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•จ

  • ๊ฒฐ๊ณผ๋ฅผ ์œ„ํ‚ค์— ๋งค์ผ ์ž‘์„ฑ

๋ฐ๋ชจ#

๋ฏธ๋‹ˆ ์„ธ๋ฏธ๋‚˜#

ํŒ€ ์ฃผ๊ฐ„ ํšŒ๊ณ #

  • ์„œ๋กœ ๊ฒฉ๋ คํ•˜๊ณ  ํ”ผ๋“œ๋ฐฑ ๋‚˜๋ˆ„๋ฉฐ ํ•จ๊ป˜ ์„ฑ์žฅํ•˜๊ธฐ

  • ์ด๋ฒˆ ์ฃผ์— ์ž˜ํ•œ ์ , ์•„์‰ฌ์šด ์ 

๋ฐฐ๋ฏผ์ƒํšŒ ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€ ๊ตฌํ˜„#

๊ทธ๋ผ์šด๋“œ ๋ฃฐ#

๊นƒ ์…‹์—…#

๋ธŒ๋žœ์น˜#

์ผ€๋ฐฅ ์ผ€์ด์Šค

  • master

  • develop

  • frontend

  • backend

  • feature/issue-#

  • document

ํŒŒ์ผ๋ช… / ํด๋”๋ช…#

์ผ€๋ฐฅ ์ผ€์ด์Šค

  • ์ปค๋ฐ‹ - ํƒ€์ž…๋ณ„ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ๋จธ๋ฆฟ๋ง ๋ถ™์ด๊ธฐ

  • git add . , git commit -m "" ์ตœ๋Œ€ํ•œ ์ž์ œํ•ด๋ณด๊ธฐ

ex) [build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test]

์ปจ๋ฒค์…”๋„ ์ปค๋ฐ‹์„ ์ฐธ์กฐํ•จ.

Conventional Commits

PR ๋ฐฉ์‹#

  • ๋‚ด๊ฐ€ ๋ณด๋‚ธ PR์€ ์ƒ๋Œ€๋ฐฉ์ด Squash and Merge ํ•˜๊ธฐ

์ด์Šˆ๋กœ ๋‚˜๋ˆ„๊ธฐ#

GitHub๋กœ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌํ•˜๊ธฐ Part1 - ์ด์Šˆ ๋ฐœ๊ธ‰ ๋ถ€ํ„ฐ ์ฝ”๋“œ๋ฆฌ๋ทฐ๊นŒ์ง€ | Popit

์œ„ํ‚ค#


๊ธฐ๋Šฅ ๋ช…์„ธํ™”#

ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ๋ฐฉ๋ฒ•#

์›”์š”์ผ

ํ™”์š”์ผ - ๋ชฝ์ดŒํ† ์„ฑ์—ญ ํฐ์ง‘ 11์ธต, 9์‹œ

์ˆ˜์š”์ผ, ๋ชฉ์š”์ผ - ๋ฒ”๊ณ„์—ญ ์Šคํƒ€๋ฒ…์Šค, 9์‹œ

๋ชฉ์š”์ผ ์™„์„ฑ์„ ๋ชฉํ‘œ๋กœ, ๊ธˆ์š”์ผ ์˜ค์ „์—๋Š” ๋ฌธ์„œ ์ •๋ฆฌ๋‚˜, ๋ฆฌํŒฉํ† ๋ง ์ •๋„๋งŒ

๊ธˆ์š”์ผ ์˜ค์ „ 11์‹œ๊นŒ์ง€


๋ฐฐ๋ฏผ์ƒํšŒ ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ#


  1. ์•„์ด๋”” input

ยท ์•ฝ 3๋ถ„

๊ณต๋ถ€๋Š” ์–ด๋–ป๊ฒŒ?#

๊ตฌ๊ธ€๋ง#

  • ์˜์–ด vs ํ•œ๊ตญ์–ด

    ํ•œ๊ตญ์–ด๋Š” ์ปจํ…์ธ ๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค. ๊ณต์‹ ์‚ฌ์ดํŠธ๋ฅผ ๋ณด์ž.

MDN#

stackoverflow#

  • ์งˆ๋ฌธ์„ ๋‚จ๊ธฐ๊ณ  ๋‹ต๋ณ€์„ ๋‹ฌ์•„๋ผ

๋””๋ฒ„๊น…#

  • ์ธ์ƒ์˜ ์ ˆ๋ฐ˜ ์ด์ƒ์„ ๋””๋ฒ„๊น…์— ์Ÿ๋Š”๋‹ค

  • ๋””๋ฒ„๊น…ํ•˜๋ฉด์„œ ํ•™์Šตํ•˜๋ผ

  • this , closure ๋“ฑ๋“ฑ ์–ด๋ ค์šด ๊ฐœ๋…์€ ๋””๋ฒ„๊น… ์ฐฝ์„ ๋„์šฐ๊ณ  ์ฝœ ์Šคํƒ์— ์Œ“์ธ ์ง€์—ญ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ๋ญ”์ง€ ๋ณด๋ฉด์„œ ํ•™์Šต

  • ๋””๋ฒ„๊น… ์ฃผ๋„ ํ•™์Šต

  • ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ๋ฌด์‹œํ•˜์ง€ ๋งˆ๋ผ

    ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ž์ฃผ ๋ด์•ผ์ง€ ๋‹ค์Œ ๋ฒˆ์— ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋งŒ ๋ณด๊ณ  ์ƒํ™ฉ์„ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์Œ

JS์˜ ํ‘œ์ค€#

  • ECMAScript

  • ES 2015 == ES6

  • prototype ๋ชฐ๋ผ๋„ ๊ฐœ๋ฐœํ•  ์ˆœ ์žˆ์ง€๋งŒ, JS์˜ ํ•ต์‹ฌ์ด prototype ์ด๋‹ค. ๊ผญ ์ดํ•ดํ•ด์•ผํ•œ๋‹ค.

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ#

ํ˜„์‹ค ์„ธ๊ณ„์— ์žˆ๋Š” ์‚ฌ๋ฌผ. ์‹ค์กดํ•˜๋Š” ๊ฒƒ.

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ์€ ์—ญํ• 

์—ญํ• ์„ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

new ํ‚ค์›Œ๋“œ ์ƒ์„ฑ์ž, ์†์„ฑ์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„ฃ์–ด์„œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ ๋‹ค.

์Šคํƒ€๋ฒ…์Šค ์ปคํ”ผ, ๋ฐ”๋ฆฌ์Šคํƒ€์˜ ์˜ˆ์‹œ

์˜์กด์„ฑ์ด ๋‚ฎ์€ ์—ฐ๊ฒฐ๊ณ ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

์—ฐ๊ฒฐ์„ ๋Š์Šจํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. โ†’ ๋””์ž์ธ ํŒจํ„ด

์˜์กด์„ฑ์ด ๋‚ฎ์•„์„œ ์ˆ˜์ •์ด ๋˜๋„ ์—ฐ๊ฒฐ๋œ ๋‹ค๋ฅธ ๊ฐ์ฒด๋Š” ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Œ

์ฝ”๋”ฉ๋ณด๋‹ค ๋””์ž์ธ

๋ฉ”์†Œ๋“œ vs ํ”„๋กœํ† ํƒ€์ž…#


๋ฉ”์†Œ๋“œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ฐจ์ง€

ํ”„๋กœํ† ํƒ€์ž…์€ ๊ฐ ๊ฐ์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์‰์–ด ํ•จ.

module vs import#

์ฆ‰์‹œ์‹คํ–‰ํ•จ์ˆ˜์™€ private#

๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ#

JavaScript๋Š” ์‹ฑ๊ธ€์Šค๋ ˆ๋“œ๋กœ ๋™์ž‘

then์ด ์‹คํ–‰๋œ ๊ฒŒ ์•„๋‹ˆ๋ผ then์— ๋“ฑ๋ก๋œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

  • ํด๋กœ์ €

  • ์ด๋ฒคํŠธ ๋ฃจํ”„


ยท ์•ฝ 6๋ถ„

๋‚˜์˜ ๊ฐ์˜ค/๊ณ„ํš#

  1. ์šฐ์•„ํ•œํ…Œํฌ์บ ํ”„ ๋๋‚˜๊ณ  ํ•จ๊ป˜ ํ”„๋กœ์ ํŠธํ•  ์‚ฌ๋žŒ๋“ค ๋งŒ๋‚˜๊ธฐ

  2. ๋‹ค๋ฅธ ์‚ฌ๋žŒ ์˜๊ฒฌ ์ž˜ ๋“ฃ๊ธฐ

  3. ๋‚ด๊ฐ€ ์•„๋Š” ๊ฒƒ์€ ์นœ์ ˆํžˆ ์•Œ๋ ค์ฃผ๊ธฐ

  4. ๋ชจ๋ฅด๋Š” ๊ฒƒ์€ ์ž˜ ์งˆ๋ฌธํ•˜๊ธฐ

  5. ๋ฐฐ์šด ๊ฒƒ์€ ๊ฐœ์ธ์ ์œผ๋กœ ์จ๋จน์–ด ๋ณด๊ธฐ

  6. ์˜ค๋Š˜ ๋ฐฐ์šด ๋‚ด์šฉ์€ ์˜ค๋Š˜ ๋ณต์Šตํ•˜๊ธฐ

Git / Github#

Git์— ๊ด€ํ•˜์—ฌ#

Git์€ ๋ฆฌ๋ˆ„์Šค ํ† ๋ฐœ์ฆˆ(Linus Torvalds)๊ฐ€ ๋ฆฌ๋ˆ…์Šค(Linux) ์ปค๋„์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋งŒ๋“ ์†Œ์Šค๊ด€๋ฆฌ ํˆด์ด๋‹ค. (ใ„ทใ„ท) Git ์ด์ „์˜ ํ˜•์ƒ๊ด€๋ฆฌ ํˆด์€ SVN, CVS ๋“ฑ์ด ์žˆ์—ˆ์Œ.

๊ฐ„๋‹จํ•œ ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์— Git์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋‚œ์ด๋„๋ฅผ ๋†’์ด์ง€๋งŒ, ๋ณต์žกํ•œ ๋Œ€๊ทœ๋ชจํ”„๋กœ์ ํŠธ์—์„œ๋Š” ํ”„๋กœ์ ํŠธ์˜ ๋‚œ์ด๋„๋ฅผ ์ƒ๋‹นํžˆ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•„์ˆ˜์ ์ด๋‹ค.

์•ˆํ‹ฐ ํŒจํ„ด#

  • git add . : ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ์„ ํ•œ๋ฒˆ์— ์Šคํ…Œ์ด์ง• ํ•˜์ง€ ๋ง์•„๋ผ. ํ•œ ํŒŒ์ผํ•œ ํŒŒ์ผ ์”ฉ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ํ™•์ธํ•˜๋ฉด์„œ ์ปค๋ฐ‹ํ•ด๋ผ.

  • git commit -m "" : ์ปค๋ฐ‹์€ git commit ์œผ๋กœ ์ œ๋ชฉ๊ณผ ํ•จ๊ป˜ ๊ฐ„๋‹จํ•œ ์„ค๋ช…๊นŒ์ง€ ๋ง๋ถ™์—ฌ์„œ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ •์„์ด๋‹ค.

์ด๋Ÿฌํ•œ ์•ˆํ‹ฐ ํŒจํ„ด์ด ๋งŒ์—ฐํ•ด ์žˆ์Œ. ์ข‹์€ ์ปค๋ฐ‹ ์Šต๊ด€์„ ๊ธฐ๋ฅด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

Git flow#

Git-flow, Github flow, Gitlab flow ๊ฐ๊ฐ์ด ๋‹ค๋ฅธ ํ˜•์ƒ ๊ด€๋ฆฌ ์ „๋žต์ด๋‹ค. ์ด ์™ธ์—๋„ ์ˆ˜๋งŽ์€ flow ๋“ค์ด ์กด์žฌ. ํ•˜์ง€๋งŒ Git-flow ๋ผ๋Š” ์ด๋ฆ„ ๋•Œ๋ฌธ์— Git flow๊ฐ€ ์ •์„, ํ‘œ์ค€์ด๋ผ๋Š” ์˜คํ•ด๋ฅผ ํ•˜๊ธฐ ์‰ฝ๋‹ค. ํ•˜์ง€๋งŒ Git flow๊ฐ€ ๋ณต์žกํ•˜๊ณ  ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์€ ์กฐ์ง, ํŒ€์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. Git flow ์™ธ์—๋„ ํ›Œ๋ฅญํ•œ flow ์ „๋žต๋“ค์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— Git flow์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€๋งŒ ๋ฌด์กฐ๊ฑด GIt flow๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ดํ‘œ์ค€์ธ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

Understanding the GitHub flow

์šฐ๋ฆฐ Git-flow๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด์š” - ์šฐ์•„ํ•œํ˜•์ œ๋“ค ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ

ํ•˜๋ฃจ์— 1000๋ฒˆ ๋ฐฐํฌํ•˜๋Š” ์กฐ์ง ๋˜๊ธฐ | ๋ฑ…ํฌ์ƒ๋Ÿฌ๋“œ

์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•ด#

  • ๋ฉ”์‹œ์ง€๋Š” ํ•œ๊ธ€๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

    ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋Š” ํŒ€์› ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฏธ๋ž˜์˜ ๋‚˜๋ฅผ ์œ„ํ•ด ๋‚จ๊ธฐ๋Š” ๊ฒƒ์ด๋‹ค. ์ ๋‹นํ•œ ๋‹จ์–ด๋ฅผ์ฐพ์ง€ ๋ชปํ•œ ์–ด์ƒ‰ํ•œ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ฅผ ๋‚จ๊ธฐ๋Š” ๊ฒƒ๋ณด๋‹ค ํ•œ๊ธ€๋กœ ๋ช…ํ™•ํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ๋‚ซ๋‹ค.

    ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ๋Š” ์˜คํ”ˆ ์†Œ์Šค๊ฐ€ ์•„๋‹ˆ๋‹ˆ๊นŒ

    ํ•˜์ด๋ธŒ๋ฆฌ๋“œ๋กœ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ œ๋ชฉ์„ ์˜์–ด๋กœ ๋‚จ๊ธฐ๊ณ  ์„ค๋ช…์„ ํ•œ๊ธ€๋กœ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค.

    ์‹ค์ œ๋กœ TDD๋ฅผ ์ž˜ํ•˜๋Š” ํŒ€์—์„  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์˜ ๋ฉ”์†Œ๋“œ ๋ช…์„ ํ•œ๊ธ€๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ํ›จ์”ฌ ๋ช…ํ™•ํ•œ ๋ฉ”์†Œ๋“œ ๋ช…์œผ๋กœ ์ธํ•ด ์ข‹์€ ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค.

  • fork ํ›„ PR๊ณผ branch ํ›„ PR์˜ ์ฐจ์ด

    ๊ธฐ๋ณธ์ ์œผ๋กœ fork๋Š” ๋‚ด๊ฐ€ ์ด ์ €์žฅ์†Œ์— ๊ถŒํ•œ์ด ์—†์„ ๋•Œ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์˜คํ”ˆ ์†Œ์Šค์— ๊ธฐ์—ฌํ•˜๋Š” ๊ฒฝ์šฐ ๋“ฑ๋“ฑ..

Git ๋ช…๋ น์–ด์™€ ๋™์ž‘ ์›๋ฆฌ#

Git ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์ œ๋Œ€๋กœ ๋ฐฐ์šด ๊ฒƒ์€ ์ฒ˜์Œ์ด์—ˆ๊ณ  ๊ธฐ์กด ์•Œ๊ณ  ์žˆ๋˜ ๊ฐœ๋…์ด ์ž˜๋ชป๋˜์—ˆ๋‹ค๋Š”๊ฒƒ์„ ๊นจ๋‹ซ๊ณ  ๊ฐœ์ธ์ ์œผ๋กœ ์ถฉ๊ฒฉ์„ ๋ฐ›์•˜๋‹ค.

Learn Git Branching

  • git init : ์ˆจ๊ฒจ์ง„ ํด๋”๊ฐ€ ํ•˜๋‚˜ ์ƒ๊น€

    • .git : ๋กœ์ปฌ ์ €์žฅ์†Œ

      • git์˜ ์ €์žฅ ๋‹จ์œ„๋Š” ์ปค๋ฐ‹

        • Working directory โ†’ Stage โ†’ Commit
    • GitHub or GitLab ... - ์›๊ฒฉ ์ €์žฅ์†Œ

    • git reset โ†’ ๋‚ ์•„๊ฐ€์ง€ ์•Š์Œ.

    • ์›Œํ‚น ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์Šค๋ƒ…์ƒท

    • ์ปค๋ฐ‹์€ ๋‚ด๋ถ€์ ์œผ๋กœ ํŠธ๋ฆฌ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Œ ํŠธ๋ฆฌ์— ์˜ค๋ธŒ์ ํŠธ๋“ค์ด ๋‹ฌ๋ ค์„œ ํ•˜๋‚˜์˜ ์ปค๋ฐ‹์„ ๊ตฌ์„ฑํ•จ

    • git cat-file -t ce013

    • git cat-file blob ce013

    • git cat-file -t HEAD

    • git log -n1

    • git cat-file -t 7da33cf4

    • git cat-file commit 7da33cf4

    • git ls-tree aaa96ced2d9a1c8e ...

    • branch๋Š” ํ—ค๋“œ์— ๋Œ€ํ•œ ์ฐธ์กฐ์ผ ๋ฟ

    • ์ปค๋ฐ‹์€ ๋ถ€๋ชจ ์ปค๋ฐ‹์ด ์žˆ๋‹ค

    • git checkout C4 vs git checkout hello

    • git์€ diff๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ „์ฒด๋ฅผ ์ €์žฅํ•œ๋‹ค.

    • svn์€ diff๋ฅผ ์ €์žฅํ•œ๋‹ค

    • tree .git

    • ๋ธŒ๋žœ์น˜๋ฅผ ๋งŽ์ด ๋งŒ๋“ค์–ด๋„ ์šฉ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.

    • git status

    • git checkout master

    • ๋ธŒ๋žœ์น˜๋Š” ์ปค๋ฐ‹์— ๋Œ€ํ•œ ์ฐธ์กฐ์ผ ๋ฟ ์•„๋ฌด๊ฒƒ๋„ ์•„๋‹ˆ๋‹ค.

    • ๊นƒ์—๋Š” ์ปค๋ฐ‹๋ฐ–์— ์—†๋‹ค. ํƒœ๊ทธ, ๋ธŒ๋žœ์น˜, ์–ด์ฉŒ๊ณ ๋Š” ๋‹ค ์ฐธ์กฐ ๋ณ€์ˆ˜์ผ ๋ฟ์ด๋‹ค ์‹ค์ œ ์กด์žฌํ•˜๋Š” ๊ฐ์ฒด๋Š” ์•„๋ฌด๊ฒƒ๋„ ์—†๋‹ค.

    • git reset โ€”hard Head~1 ์‹œ์— ๋ณต์›ํ•˜๋Š” ๋ฒ•

    • git branch test ์ฒดํฌ์„ฌ

    • git reflog ๋ชจ๋“  ์ฐธ์กฐ ๋ณ€์ˆ˜๋“ค์˜ ๋กœ๊ทธ๋ฅผ ๋ณด๋Š” ๋ช…๋ น

    • git push ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์žˆ๋Š” ๊ฒƒ์„ ์›๊ฒฉ ์ €์žฅ์†Œ๋กœ ๋ณด๋ƒ„