TIL

hyena_leeยท2022๋…„ 12์›” 28์ผ
0

TIL

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

๐Ÿ—“ ์˜ค๋Š˜ ํ•œ ์ผ

  1. CLI ๊ธฐ๋ณธ ๊ฐœ๋… ๋ฐ ์‚ฌ์šฉ๋ฒ•
  2. apt / wget ์„ค์น˜
  3. nvm & node.js ์„ค์น˜
  4. npm & package.json ์„ค์น˜
  5. Git ์„ค์น˜

โœ๏ธ CLI(Command Line Interface)๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

CLI(Command Line Interface)๋Š” ๋ช…๋ น์–ด ์ธํ„ฐํŽ˜์ด์Šค๋ผ๊ณ  ํ•˜๋ฉฐ ํ…์ŠคํŠธ ํ„ฐ๋ฏธ๋„์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์™€ ์ปดํ“จํ„ฐ๊ฐ€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ๋œปํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ž‘์—… ๋ช…๋ น์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ปดํ“จํ„ฐ ํ‚ค๋ณด๋“œ ๋“ฑ์„ ํ†ตํ•ด ๋ฌธ์ž์—ด์˜ ํ˜•ํƒœ๋กœ ์ž…๋ ฅํ•˜๋ฉฐ ์ปดํ“จํ„ฐ๋กœ๋ถ€ํ„ฐ์˜ ์ถœ๋ ฅ ์—ญ์‹œ ๋ฌธ์ž์—ด์˜ ํ˜•ํƒœ๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

์š”์ฆ˜์˜ ๋Œ€๋ถ€๋ถ„์˜ ์šด์˜์ฒด์ œ๋Š” ์œˆ๋„์šฐ ์ฐฝ์„ ๋ณด๋ฉฐ ๋Œ€๋ถ€๋ถ„ ๋งˆ์šฐ์Šค๋กœ ์ž‘์—…ํ•˜๋Š” GUI(Grapgic User Interface)๊ทธ๋ž˜ํ”ฝ ์œ ์ € ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๋งŽ์€ ๋ถ€๋ถ„์—์„œ CLI(Comand Line Interface)๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์œˆ๋„์šฐ์˜ CMD์ฐฝ๊ณผ MacOS์˜ Terminal์ฐฝ์ด CLI๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค..

โœ๏ธ CLI ์ž‘๋™๋ฐฉ์‹

CLI๋Š” ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”๋ฐ ์ด๋Ÿฐ ์ž…์ถœ๋ ฅ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํ„ฐ๋ฏธ๋„์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋ช…๋ น์–ด๋ฅผ ํ•ด์„ํ•ด์ฃผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์…ธ(shell)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
Window์—์„œ๋Š” โ€˜>โ€™ MacOS, Linux์—์„œ๋Š” โ€˜$โ€™์˜ ํ˜•ํƒœ๋กœ ํ‘œ์‹œํ•˜๋ฉฐ ์‚ฌ์šฉ์ž์˜ ๋ช…๋ น์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” Command Prompt(๋ช…๋ นํ”„๋กฌํ”„ํŠธ)๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ git ๋ช…๋ น์–ด ์ •๋ฆฌ

์ตœ์ดˆ ์„ค์ •]

  • git config --global user.name ๊ณ„์ •๋ช…
  • git ๊ณ„์ •๋ช… ๋“ฑ๋ก
    git config --global user.email ์ด๋ฉ”์ผ
  • git ์ด๋ฉ”์ผ ๋“ฑ๋ก
    git config --list
  • git ์„ค์ •์ •๋ณด ์กฐํšŒ
    git config --global core.editor ์—๋””ํ„ฐ
  • git editor ๋ณ€๊ฒฝ
  • vi๋กœ ๋ณ€๊ฒฝ > git config --global core.editor vi
  • vscode๋กœ ๋ณ€๊ฒฝ > git config --global core.editor "code --wait"
    p.s.) vscode๋ฅผ ์„ค์น˜ํ–ˆ์„ ๊ฒฝ์šฐ code . ๋ช…๋ น์–ด๋กœ vscode ์‹คํ–‰ ๊ฐ€๋Šฅ
    git config --global -e
  • git config์— ์„ค์ •ํ•œ editor๋กœ config ํŒŒ์ผ ์—ด๊ธฐ
    p.s.) vscode๋ฅผ diff tool OR merge tool๋กœ ์ด์šฉํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ config์— ์ถ”๊ฐ€
    git config --global alias.์ค„์ผ๋ช…๋ น์–ด ์›๋ณธ๋ช…๋ น์–ด
  • ๋ช…๋ น์–ด alias ๋“ฑ๋ก
    e.g.) git config --global alias.sts status == git sts

[๊ธฐ๋ณธ]

  • git init
  • ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ git local repository[Working Directory]๋กœ ์ง€์ •(์ƒ์„ฑ)
  • ls -al ๋ช…๋ น์–ด๋กœ .git ์ˆจ๊น€ํŒŒ์ผ ์ƒ์„ฑ ํ™•์ธ
  • rm -rf .git ๋ช…๋ น์–ด๋กœ local repository ์‚ญ์ œ
    git status
  • ํŒŒ์ผ ์ƒํƒœ ํ™•์ธ(staged, untracked, ..)
    git add ํŒŒ์ผ๋ช…
  • ํ•ด๋‹น ํŒŒ์ผ์„ [Staging Area]๋กœ ์ด๋™(tracking)
    git add .
    -ํ˜„์žฌ ํด๋”์˜ ์ „์ฒด ํŒŒ์ผ์„ ์ด๋™
    git commit
  • [Staging Area]์— ์žˆ๋Š” ํŒŒ์ผ์„ ์›๊ฒฉ์ €์žฅ์†Œ[Repository]๋กœ ์ปค๋ฐ‹
  • ์˜ต์…˜์—†์ด ํ•ด๋‹น ๋ช…๋ น์–ด๋งŒ ์ž…๋ ฅํ•  ๊ฒฝ์šฐ editor ํ˜ธ์ถœ
    git commit -m "์ปค๋ฐ‹๋ฉ”์„ธ์ง€"
  • editor ํ˜ธ์ถœ์—†์ด ๋ฐ”๋กœ ์ปค๋ฐ‹
    git commit -am "์ปค๋ฐ‹๋ฉ”์„ธ์ง€"
  • [Staging Area]์— ์˜ฌ๋ฆผ๊ณผ ๋™์‹œ์— ์ปค๋ฐ‹(= git add .+ git commit -m "์ปค๋ฐ‹๋ฉ”์„ธ์ง€")
  • ๋‹จ, 1๋ฒˆ์ด๋ผ๋„ ์ปค๋ฐ‹๋œ ๋Œ€์ƒ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    git diff
  • local repository[Working Directory]์™€ [Staging Area]์˜ ์ฐจ์ด๋ฅผ ๋ณด์—ฌ์คŒ
    git log
  • commit ๋กœ๊ทธ ํ™•์ธ

[๋ธŒ๋žœ์น˜]

  • git branch
  • ๋ธŒ๋žœ์น˜ ๋ชฉ๋ก ์กฐํšŒ(ํ˜„์žฌ ์†ํ•œ ๋ธŒ๋žœ์น˜๋Š” ์•ž์— *๊ฐ€ ๋ถ™์Œ)
    git branch ๋ธŒ๋žœ์น˜๋ช…
  • ๋ธŒ๋žœ์น˜๋ช…์œผ๋กœ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ
  • ๋‹จ, main ๋ธŒ๋žœ์น˜์— 1๋ฒˆ ์ด์ƒ commit ํ•ด์•ผํ•จ
    git branch checkout ๋ธŒ๋žœ์น˜๋ช…
  • ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋กœ local repository[Working Directory] ๋ณ€๊ฒฝ
    git branch -b ๋ธŒ๋žœ์น˜๋ช…
  • ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ํ›„ checkout(= git branch ๋ธŒ๋žœ์น˜๋ช… + git branch checkout ๋ธŒ๋žœ์น˜๋ช…)
    git branch -d ๋ธŒ๋žœ์น˜๋ช…
  • ๋ธŒ๋žœ์น˜๋ช… ๋ธŒ๋žœ์น˜ ์‚ญ์ œ
    git branch merge ๋ธŒ๋žœ์น˜๋ช…
  • ํ˜„์žฌ checkout๋œ ๋ธŒ๋žœ์น˜๋กœ ๋ธŒ๋žœ์น˜๋ช…์˜ ๋ธŒ๋žœ์น˜ ํ•ฉ์นจ

[๊นƒํ—ˆ๋ธŒ]

  • git remote
  • git ์›๊ฒฉ์ €์žฅ์†Œ[Repository] ๋ชฉ๋ก ํ™•์ธ
    git remote -v
  • git ์›๊ฒฉ์ €์žฅ์†Œ ์ด๋ฆ„๊ณผ url ๋ชฉ๋ก ํ™•์ธ
    git remote add ์ €์žฅ์†Œ์ด๋ฆ„ ์ €์žฅ์†ŒURL
  • ์ €์žฅ์†ŒURL์˜ ์›๊ฒฉ์ €์žฅ์†Œ๋ฅผ ์ €์žฅ์†Œ์ด๋ฆ„์œผ๋กœ ์ถ”๊ฐ€
    git remote rm ์ €์žฅ์†Œ์ด๋ฆ„
  • ์ €์žฅ์†Œ์ด๋ฆ„์˜ ์›๊ฒฉ์ €์žฅ์†Œ ์ œ๊ฑฐ
    git pull
  • ์›๊ฒฉ์ €์žฅ์†Œ[Repository]์˜ ๋‚ด์šฉ์„ ๊ฐ€์ ธ์™€์„œ(fetch) local repository[Working Directory]์— ํ•ฉ์นจ(merge)
    git push
  • ์›๊ฒฉ์ €์žฅ์†Œ[Repository]์— local repository[Working Directory]์˜ commit ๋‚ด์šฉ์„ ์˜ฌ๋ฆผ
    git push -u ์›๊ฒฉ์ €์žฅ์†Œ๋ช… ๋กœ์ปฌ๋ธŒ๋žœ์น˜๋ช…
  • ๋กœ์ปฌ๋ธŒ๋žœ์น˜๋ช…์˜ commit ๋‚ด์šฉ์„ ์›๊ฒฉ์ €์žฅ์†Œ๋กœ ์˜ฌ๋ฆผ
  • -u ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ํ•ด๋‹น ์›๊ฒฉ์ €์žฅ์†Œ์™€ ๋ธŒ๋žœ์น˜๊ฐ€ default๋กœ ์ง€์ •๋˜์–ด git push ๋ช…๋ น์–ด๋งŒ ์ž…๋ ฅ ๊ฐ€๋Šฅ
    git fetch
  • ์›๊ฒฉ์ €์žฅ์†Œ[Repository]์˜ ๋‚ด์šฉ์„ local repository[Working Directory]๋กœ ๊ฐ€์ ธ์˜ด
  • git checkout ์›๊ฒฉ์ €์žฅ์†Œ๋ช…/๋กœ์ปฌ๋ธŒ๋žœ์น˜๋ช… OR git checkout FETCH_HEAD =๊ฐ€์ ธ์˜จ fetch ๋‚ด์šฉ ํ™•์ธ
    git clone ์ €์žฅ์†ŒURL
  • ์ €์žฅ์†ŒURL์˜ ์›๊ฒฉ์ €์žฅ์†Œ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ์ถ”๊ฐ€(remote add ๋ช…๋ น ํ•„์š”์—†์Œ)

๐Ÿ“— ์ง์ˆ˜ ์ƒ์„ฑ๊ธฐ

Bare Minimum Requirements

  • node.js ํ”„๋กœ๊ทธ๋žจ์ธ index.js๋ฅผ ์‹คํ–‰์‹œ์ผœ์„œ CLI์—์„œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.
  • range ๋ชจ๋“ˆ์„ ์„ค์น˜ํ•˜๊ณ , ์‚ฌ์šฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.
    ์ง์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” getListMultiplesOfTwo ํ•จ์ˆ˜๋ฅผ range ๋ชจ๋“ˆ์„ ์ด์šฉํ•ด์„œ ์ž‘์„ฑํ•˜์„ธ์š”.
  • npm run test ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด ์ œ๋Œ€๋กœ ์ž‘์„ฑํ–ˆ๋Š”์ง€ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ „๋ถ€ ํ†ต๊ณผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • npm run start ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด index.js ํŒŒ์ผ์ด ์‹คํ–‰๋˜๋„๋ก ๋งŒ๋“œ์„ธ์š”.
  • npm run test ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด ์ œ๋Œ€๋กœ ์ž‘์„ฑํ–ˆ๋Š”์ง€ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ „๋ถ€ ํ†ต๊ณผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • npm run submit ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด ๊ณผ์ œ๋ฅผ ์ œ์ถœํ•˜์„ธ์š”.

package.json ํŒŒ์ผ์— start ์Šคํฌ๋ฆฝํŠธ ๋ถ€๋ถ„์ด ''๋นˆ ๋ฌธ์ž์—ด ์ธ๋ฐ ์ด๋ถ€๋ถ„์„ node index.js๋กœ ์ˆ˜์ • ํ•ด์ฃผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณผ์ œ๊ฐ€ ์ถฉ์กฑํ•˜๋Š” ์กฐ๊ฑด์„ ๋‹ค ํ†ต๊ณผ ํ•˜์˜€๋‹ค๊ณ  ๋œฌ๋‹ค.

๐ŸŒˆ ํšŒ๊ณ 

ํ•œ ๋‹จ๊ณ„ ํ•œ๋‹จ๊ณ„ ์„ค์น˜ํ•˜๋ฉด์„œ ์ด๋Ÿฐ๊ฒŒ ์‹ค์ œ ์ด๋ฃจ์–ด๋Š” ์ง€๋Š” ๊ฑด์ง€ ์˜๋ฌธ์ด ๋“ค๊ณ  ๋ชป๋ณด๋˜๊ฒŒ ์ •๋ง ๋งŽ์•˜๋‹ค. ์™œ ์ด๋ ‡๊ฒŒ ๋ณต์žกํ•˜๊ฒŒ ๋‹ค๊ฐ€๊ฐ€์•ผํ•˜๋Š” ๊ฑด์ง€ ์•„๋‹˜ git ์ต์ˆ™ํ•˜์ง€ ์•Š์•„์„œ ๊ทธ๋Ÿฐ๊ฑด์ง€ ์˜ค๋Š˜ ๊ทธ๋ž˜๋„ ๋ฌด์‚ฌํžˆ ์—๋Ÿฌ์—†์ด ์ž˜ ์Šค๋ฌด์Šคํ•˜๊ฒŒ ์ž˜ ๋„˜์–ด๊ฐ”๊ณ  ํŽ˜์–ด๋ถ„๊ณผ๋„ ์„œ๋กœ ์•Œ๊ณ  ์žˆ๋Š”์ง€ ์ง€์‹ ๊ณต์œ ํ•ด๊ฐ€๋ฉฐ ์˜ค๋Š˜ ๋งˆ๋ฌด๋ฆฌ๋ฅผ ์ž˜ ํ—ค๋‚˜๊ฐ€๊ฒƒ ๊ฐ™๋‹ค.

profile
์‹ค์ˆ˜๋ฅผ ๋‘๋ ค์›Œ ๋ง๊ณ  ๊ณ„์† ๋„์ „ ํ•˜๋Š” ๊ฐœ๋ฐœ์ž์˜ ์—ฌ์ •!

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