[TIL] Unit 12. Git & Solo Project

string_mainยท2022๋…„ 5์›” 19์ผ
0

Git

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

๐ŸŒฑ Git ์šฉ์–ด ์ •๋ฆฌ


  • ๋กœ์ปฌ ์ €์žฅ์†Œ(Local Repository) : ์ž์‹ ์˜ ์ปดํ“จํ„ฐ(๋กœ์ปฌ ํ™˜๊ฒฝ)์˜ ์ž‘์—… ๊ณต๊ฐ„์— ์œ„์น˜ํ•œ Git repository์ด๋‹ค.
    • ์ปดํ“จํ„ฐ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ์— ์›ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•ด์„œ ๋กœ์ปฌ Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ์˜ ํŒŒ์ผ ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์›๊ฒฉ ์ €์žฅ์†Œ(Remote Repository) : ์›๊ฒฉ ์˜จ๋ผ์ธ ์„œ๋ฒ„ ์ƒ์˜ ์ €์žฅ์†Œ๋กœ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ๊ณต์œ  ๊ฐ€๋Šฅํ•˜๋‹ค.

๐ŸŒฑ Git ๋‹ค๋ฃจ๊ธฐ


๐ŸŒฟ ๋กœ์ปฌ ์ €์žฅ์†Œ ๋งŒ๋“ค๊ธฐ

  1. git init : ์ฝ”๋“œ๋ฅผ ์ €์žฅํ•  ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ์— ๋กœ์ปฌ ์ €์žฅ์†Œ ์ƒ์„ฑ (git clone์‹œ์—๋Š” .git ํŒŒ์ผ์ด ์ž๋™์œผ๋กœ ์ƒ๊ฒจ์„œ git initํ•  ํ•„์š” ์—†์Œ)
# ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ
mkdir ~/Desktop/codestates
cd ~/Desktop/codestates
# ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ
mkdir my-app
# ๋””๋ ‰ํ† ๋ฆฌ ์ด๋™ (change directory)
cd my-app
# ํŒŒ์ผ ์ƒ์„ฑ
touch index.html style.css

git init
  1. git add : ์ž‘์—… ๊ณต๊ฐ„(work space)์˜ ํŒŒ์ผ ๋ฐ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ git์˜ ๊ด€๋ฆฌ ํ•˜์— ์žˆ๋Š” ์ƒํƒœ๋กœ ์˜ฌ๋ฆผ (staging area)

    staging area๋Š” ๋ฌด๋น™ ๋ฐ•์Šค์ด๋‹ค. ์ด์‚ฌ๋ฅผ ๊ฐˆ ๋•Œ ๋ฌผ๊ฑด์„ ์šฉ๋„ ๋ณ„๋กœ ๋ถ„๋ฅ˜ํ•ด์„œ ๋‹ด๊ณ  ๋ผ๋ฒจ๋ง์„ ํ•˜๋ฉด ํŽธํ•˜๋‹ˆ๊นŒ!

    • git add <๊ฒฝ๋กœ๋ช…/ํŒŒ์ผ๋ช…> : ํ˜„์žฌ ๊ฒฝ๋กœ์˜ ๋ชจ๋“  ํŒŒ์ผ์„ staging area์— ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๊ฒฝ๋กœ๋ช…์— . ์‚ฌ์šฉ
    • git status : untracked ํŒŒ์ผ, staging area์— ์žˆ๋Š” tracked ํŒŒ์ผ ๋ชฉ๋ก์„ ํ™•์ธ
  2. git commit : staging area์˜ ํŒŒ์ผ์„ commitํ•˜์—ฌ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ก(snapshot)

    • commit -m "์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€"
    • commit์€ ์ž‘์€ ๋‹จ์œ„๋กœ ์ž์ฃผ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ (๋ณต์›์ด ์‰ฝ๊ธฐ ๋•Œ๋ฌธ)
    • commit ํ•˜๊ธฐ ์ „์— git status๋กœ ์ƒํƒœ ํ™•์ธ ํ•ด์•ผ ํ•จ
# Good: ๊ธฐ๋Šฅ(feat) ๊ตฌํ˜„์„ ํ™•์ธ ๊ฐ€๋Šฅ, ์ •ํ™•ํ•œ ๊ธฐ์ˆ  ์šฉ์–ด ์‚ฌ์šฉ, ์งง๊ณ  ๊ฐ„๊ฒฐํ•จ
git commit -m "feat: ์ธ์Šคํƒ€ ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ ํŽ˜์ด์ง€๋„ค์ด์…˜"
# Bad: ์ปค๋ฐ‹ ํƒ€์ž… ๊ตฌ๋ถ„ X, ๋งŒ์—ฐ์ฒด, ์‚ฌ์‹ค ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜๊ธฐ ์–ด๋ ค์šด "ํšจ์œจ์„ฑ"์— ๋Œ€ํ•œ ์ฝ”๋ฉ˜ํŠธ
git commit -m "๋” ํšจ์œจ์ ์ธ ์ธ์Šคํƒ€ ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•จ"
# Very Bad: ์–ด๋–ป๊ฒŒ ๋‚˜์€ ํ˜•์‹์ธ์ง€ ํŒ๋‹จํ•˜๊ธฐ ์–ด๋ ค์›€, ์–ด๋–ค ๊ธฐ๋Šฅ์ธ์ง€ ํ™•์ธ์ด ์–ด๋ ค์›€
git commit -m "์ข€ ๋” ๋‚˜์€ ํ˜•์‹"

์ผ๋ฐ˜ ๋””๋ ‰ํ„ฐ๋ฆฌ โžก๏ธ git init โžก๏ธ ๋กœ์ปฌ ์ €์žฅ์†Œ โžก๏ธ work space โžก๏ธ staging area โžก๏ธ commit โžก๏ธ ๋กœ์ปฌ์— ์ฝ”๋“œ ๊ธฐ๋ก(snapshot)

๐ŸŒฟ ์›๊ฒฉ ์ €์žฅ์†Œ ๋‹ค๋ฃจ๊ธฐ

  1. git remote add <remote_name> <URL> : ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์ฃผ์†Œ(URL)๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๋ช…๋ น
    • git remote -v : ์›๊ฒฉ ์ €์žฅ์†Œ๊ฐ€ ์ž˜ ์—ฐ๊ฒฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ช…๋ น
# origin์€ ์›๊ฒฉ ์ €์žฅ์†Œ ์ฃผ์†Œ๋ฅผ ๋Œ€์‹ ํ•  ์ด๋ฆ„์ž„.
git remote add origin git@github.com:codestates-seb/agora-states-fe.git
  1. git push -u <remote_name> <branch> : ๋กœ์ปฌ ์ €์žฅ์†Œ์— ๊ธฐ๋กํ•œ ๋‚ด์šฉ์„ ์›๊ฒฉ ์ €์žฅ์†Œ์— push
    • -u ์˜ต์…˜์€ ๋ช…๋ น์–ด๋ฅผ ๋‚ ๋ฆด ๋•Œ ๋งˆ๋‹ค ์›๊ฒฉ ์ €์žฅ์†Œ์™€ ํ˜„์žฌ ๋ธŒ๋žœ์น˜๋ฅผ ์ž…๋ ฅํ•œ๋Š ๊ฒƒ์ด ๊ท€์ฐฎ์„ ๋•Œ ์ตœ์ดˆ ํ•œ๋ฒˆ๋งŒ ์ž…๋ ฅํ•˜๊ณ  ์ดํ›„์—๋Š” ์ƒ๋žตํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.
# ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ๊ธฐ๋ก์„ ์›๊ฒฉ ์ €์žฅ์†Œ origin์˜ main ๋ธŒ๋žœ์น˜๋กœ push
git push -u origin main
  1. git pull <remote_name> <branch> : ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๊ธฐ๋ก์„ ๋กœ์ปฌ ์ €์žฅ์†Œ๋กœ ์˜ฎ๊ธฐ๋Š” ๋ช…๋ น
# ์›๊ฒฉ ์ €์žฅ์†Œ origin์˜ main ๋ธŒ๋žœ์น˜ ๊ธฐ๋ก์„ ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ main ๋ธŒ๋žœ์น˜๋กœ pull
git pull origin main

๐ŸŒฟ Fork

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

public ํ”„๋กœ์ ํŠธ fork โžก๏ธ ์ž์‹ ์˜ ์›๊ฒฉ ์ €์žฅ์†Œ โžก๏ธ ์ž์‹ ์˜ ๋กœ์ปฌ ์ €์žฅ์†Œ๋กœ git cloneํ›„ ๊ฐœ๋ฐœ โžก๏ธ public ํ”„๋กœ์ ํŠธ์— ๋ฒ„๊ทธ ์ˆ˜์ • ๋ฐ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ์š”์ฒญ (puch & pull request) โžก๏ธ public ํ”„๋กœ์ ํŠธ์—์„œ ์—…๋ฐ์ดํŠธ ๋œ ๋‚ด์šฉ์„ pull โžก๏ธ contributor ๋“ฑ๊ทน!

๐ŸŒฑ ๋‚˜๋งŒ์˜ ์•„๊ณ ๋ผ ์Šคํ…Œ์ด์ธ  ๋งŒ๋“ค๊ธฐ


๊ตฌ๊ฒฝํ•˜๋Ÿฌ ๊ฐ€๊ธฐ!

๐ŸŒฟ Bare Minimum Requirement

  • ๋””์Šค์ปค์…˜ ๋‚˜์—ด ๊ธฐ๋Šฅ
    • script.js๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ agoraStatesDiscussions ๋ฐฐ์—ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ตฌํ˜„ํ•˜๊ธฐ
  • CSS
    • ์งˆ๋ฌธ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ค‘์•™์œผ๋กœ ์˜ค๊ฒŒ ํ•˜๊ธฐ
    • style.css๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ๋ฉ‹์ง€๊ฒŒ ๊พธ๋ฏธ๊ธฐ
    • colorhunt, dribbble์—์„œ ์ ์ ˆํ•œ ์ƒ‰ ์กฐํ•ฉ, ๋””์ž์ธ ์ฐธ๊ณ ํ•˜๊ธฐ
  • ๋””์Šค์ปค์…˜ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ
    • script.js๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ๋””์Šค์ปค์…˜ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ
    • section.form__container ์š”์†Œ์— ์ƒˆ๋กœ์šด ์งˆ๋ฌธ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์ž…๋ ฅ ํผ ์ œ์ž‘
    • ์•„์ด๋””, ๋ณธ๋ฌธ์„ ์ž…๋ ฅํ•˜๊ณ  ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์‹ค์ œ ํ™”๋ฉด์— ๋””์Šค์ปค์…˜์ด ์ถ”๊ฐ€๋˜๊ฒŒ ํ•˜๊ธฐ
    • agoraStatesDiscussions ๋ฐฐ์—ด์— ์ถ”๊ฐ€ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์Œ“์ด๊ฒŒ ํ•˜๊ธฐ

๐ŸŒฟ Advanced Challenge

  • ํ˜„์ง€ ์‹œ๊ฐ„ ์ ์šฉ
    • ์ƒ˜ํ”Œ ์‹œ๊ฐ„์„ ์ž˜ ๋ณ€ํ˜•ํ•˜์—ฌ, ํ˜„์ง€ ์‹œ๊ฐ„์— ๋งž๊ฒŒ ํ‘œํ˜„ํ•˜๊ธฐ (ex. ์˜ค์ „ 10:02:17)
  • ํŽ˜์ด์ง€๋„ค์ด์…˜ ๊ธฐ๋Šฅ
    • ํŽ˜์ด์ง€๋„ค์ด์…˜์— ๋Œ€ํ•ด์„œ ์Šค์Šค๋กœ ํ•™์Šต
    • ํ•œ ํŽ˜์ด์ง€์— 10๊ฐœ์”ฉ ๋””์Šค์ปค์…˜์ด ๋ณด์—ฌ์•ผ ํ•จ
    • ๋‹ค์Œ ํŽ˜์ด์ง€๋กœ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ
    • ์ด์ „ ํŽ˜์ด์ง€๋กœ ๋Œ์•„์˜ฌ ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ
    • ๋‹ค์Œ ํŽ˜์ด์ง€๊ฐ€ ์—†๊ฑฐ๋‚˜, ์ด์ „ ํŽ˜์ด์ง€๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ํŽ˜์ด์ง€๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•จ
  • ๋””์Šค์ปค์…˜ ์œ ์ง€ ๊ธฐ๋Šฅ
    • LocalStorage์— ๋Œ€ํ•ด์„œ ์Šค์Šค๋กœ ํ•™์Šตํ•˜๊ณ , ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€ํ•˜๋Š” Discussion์ด ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•ด๋„ ์œ ์ง€๋˜๋„๋ก ์ œ์ž‘ํ•˜๊ธฐ

๐ŸŒฑ ์•Œ๊ฒŒ๋œ ์  & ๋Š๋‚€ ์ 


  • https vs SSH ์ค‘ SSH๊ฐ€ ๊ทผ-๋ณธ์ด๊ธด ํ•œ๋ฐ ๋‘˜๋‹ค ๊ธฐ๋ณธ์ ์ธ ๋ณด์•ˆ์€ ์žˆ์Œ.
  • ์˜ˆ์ „์—” CLI๋ฅผ ์–ด๋ ค์›Œ ํ–ˆ์—ˆ๋Š”๋ฐ, ์ด์ œ ์ข€ ์ต์ˆ™ํ•ด์ง€๊ณ  ๋‚˜๋‹ˆ GUI๋ณด๋‹ค ํŽธํ•˜๊ฒŒ ๋Š๊ปด์ง€๊ธฐ๋„ ํ•œ๋‹ค! ์กฐ๊ธˆ ๋” ์žฌ๋ฏธ ๋ถ™์—ฌ๋ณด์ž ^ใ…^

๐ŸŒฑ ์ถ”๊ฐ€ ํ•™์Šต


  • Advanced ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • git ๋ช…๋ น์–ด ์—ฐ์Šต
profile
FE developer

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