allthingsare๐Ÿ…ฟ๏ธ.com Books โฌ…๏ธ Back allthingsare




 Git & GitHub ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

1. Git์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

Git์€ ์†Œ์Šค์ฝ”๋“œ ๋ฒ„์ „ ๊ด€๋ฆฌ ๋„๊ตฌ๋‹ค.
ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋‹ค ๋ณด๋ฉด, "์–ด์ œ ์ฝ”๋“œ๋กœ ๋˜๋Œ๋ฆฌ๊ณ  ์‹ถ๋‹ค", "์—ฌ๋Ÿฌ ๋ช…์ด ๋™์‹œ์— ์ž‘์—…ํ•˜๊ณ  ์‹ถ๋‹ค" ๊ฐ™์€ ์ƒํ™ฉ์ด ์ƒ๊ธด๋‹ค.
์ด๋Ÿด ๋•Œ ํ•„์š”ํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ ๋ฒ„์ „ ๊ด€๋ฆฌ์ด๊ณ , ๊ทธ๊ฑธ ๋„์™€์ฃผ๋Š” ๊ฒŒ Git์ด๋‹ค.

Git์˜ ํ•ต์‹ฌ ๊ฐœ๋…:

  • ๋ฒ„์ „ ๊ธฐ๋ก : ํŒŒ์ผ์ด ์–ธ์ œ, ์–ด๋–ป๊ฒŒ ๋ฐ”๋€Œ์—ˆ๋Š”์ง€ ์ €์žฅ

  • ๋˜๋Œ๋ฆฌ๊ธฐ : ํŠน์ • ์‹œ์ ์˜ ์ฝ”๋“œ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ์Œ

  • ํ˜‘์—… : ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ๋™์‹œ์— ์ž‘์—… ๊ฐ€๋Šฅ


2. GitHub์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

GitHub์€ Git ์ €์žฅ์†Œ๋ฅผ ์ธํ„ฐ๋„ท(ํด๋ผ์šฐ๋“œ)์— ์˜ฌ๋ ค๋†“์„ ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค๋‹ค.
Git์€ ๋‚ด ์ปดํ“จํ„ฐ ์•ˆ์—์„œ๋งŒ ๋™์ž‘ํ•˜๋Š”๋ฐ, GitHub์— ์˜ฌ๋ฆฌ๋ฉด ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ๊ณต์œ ํ•˜๊ณ  ํ˜‘์—…ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋น„์œ :

  • Git : ์ง‘์•ˆ์— ์žˆ๋Š” ๊ฐœ์ธ ์ผ๊ธฐ์žฅ (๋‚ด ์ปดํ“จํ„ฐ ์•ˆ์— ๊ธฐ๋ก)

  • GitHub : ์ธํ„ฐ๋„ท์— ์žˆ๋Š” ์˜จ๋ผ์ธ ์ผ๊ธฐ์žฅ (๋‹ค ๊ฐ™์ด ๋ณผ ์ˆ˜ ์žˆ์Œ)


3. Git ๊ธฐ๋ณธ ํ๋ฆ„

ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ๋•Œ Git์„ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ณธ ๋‹จ๊ณ„๋Š” ์ด๋ ‡๊ฒŒ ๋‹จ์ˆœํ•˜๋‹ค:

  1. ์ˆ˜์ •(Working Directory)

    • ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•œ๋‹ค.

  2. ์ถ”๊ฐ€(Stage)

    • ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ์„ Git์— "์ €์žฅ ์ค€๋น„" ์‹œํ‚จ๋‹ค. (git add)

  3. ์ €์žฅ(Commit)

    • ์ค€๋น„๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ•˜๋‚˜์˜ ๋ฒ„์ „์œผ๋กœ ๊ธฐ๋กํ•œ๋‹ค. (git commit)

  4. ์—…๋กœ๋“œ(Push)

    • ๋‚ด ์ปดํ“จํ„ฐ์—์„œ ๋งŒ๋“  ๋ฒ„์ „์„ GitHub(์›๊ฒฉ ์ €์žฅ์†Œ)์— ์˜ฌ๋ฆฐ๋‹ค. (git push)

๊ทธ๋ฆผ์œผ๋กœ ๋ณด๋ฉด:

์ฝ”๋“œ ์ž‘์„ฑ โ†’ git add โ†’ git commit โ†’ git push

4. GitHub์œผ๋กœ ํ˜‘์—…ํ•˜๊ธฐ

  • ํ˜ผ์ž ์‚ฌ์šฉํ•  ๋•Œ : ๋ฒ„์ „ ๊ด€๋ฆฌ + ๋ฐฑ์—… ์šฉ๋„

  • ์—ฌ๋Ÿฌ ๋ช…์ด ์‚ฌ์šฉํ•  ๋•Œ : ๊ฐ์ž ์ž‘์—…ํ•œ ๊ฒƒ์„ ํ•ฉ์น˜๊ณ (merge), ๋™์‹œ์— ์ž‘์—… ์ถฉ๋Œ์ด ์ƒ๊ธฐ๋ฉด ์กฐ์œจ(conflict ํ•ด๊ฒฐ)ํ•œ๋‹ค.

์˜ˆ์‹œ ํ๋ฆ„:

  1. ํŒ€์›์ด ๊ฐ์ž ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  commit ํ•œ๋‹ค.

  2. GitHub์— push ํ•œ๋‹ค.

  3. ๋‹ค๋ฅธ ํŒ€์›์€ git pull ํ•ด์„œ ์ตœ์‹  ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.


5. ํ•ต์‹ฌ ์šฉ์–ด ์š”์•ฝ

  • Repository(์ €์žฅ์†Œ) : ํ”„๋กœ์ ํŠธ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„

  • Commit : ํŠน์ • ์‹œ์ ์˜ ์ €์žฅ ๊ธฐ๋ก

  • Branch : ๊ฐ€์ง€๋ฅผ ์ณ์„œ ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„

  • Merge : ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ ํ•ฉ์น˜๋Š” ๊ฒƒ

  • Clone : ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๋‚ด ์ปดํ“จํ„ฐ๋กœ ๋ณต์‚ฌํ•ด ์˜ค๋Š” ๊ฒƒ


์ •๋ฆฌ

  • Git = ๋ฒ„์ „ ๊ด€๋ฆฌ ๋„๊ตฌ (๋‚ด ์ปดํ“จํ„ฐ์—์„œ ๊ด€๋ฆฌ)

  • GitHub = Git ์ €์žฅ์†Œ๋ฅผ ์ธํ„ฐ๋„ท์— ๊ณต์œ ํ•˜๋Š” ์„œ๋น„์Šค

  • Git์„ ์“ฐ๋ฉด "์ฝ”๋“œ๋ฅผ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ๊ณ ", "์—ฌ๋Ÿฌ ๋ช…์ด ๋™์‹œ์— ํ˜‘์—…ํ•  ์ˆ˜ ์žˆ๋‹ค."


    https://github.com/apps/desktop



    CRUD ๊ฐœ๋… ์ •๋ฆฌ

    1. CRUD๋ž€?

    CRUD๋Š” ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋„ค ๊ฐ€์ง€ ๊ธฐ๋Šฅ์ด๋‹ค.

    • C (Create) : ์ƒˆ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ ๋‹ค.

    • R (Read) : ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š”๋‹ค. (์ „์ฒด ์กฐํšŒ / ๊ฐœ๋ณ„ ์กฐํšŒ)

    • U (Update) : ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค.

    • D (Delete) : ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•œ๋‹ค.

     CRUD๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, API ๋“ฑ ๋ชจ๋“  ์‹œ์Šคํ…œ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๋Š” ํ•ต์‹ฌ ๊ฐœ๋…์ด๋‹ค.


    2. CRUD์™€ RESTful API

    RESTful API์—์„œ๋Š” CRUD๋ฅผ HTTP ๋ฉ”์„œ๋“œ์™€ ๋งค์นญํ•˜์—ฌ ํ‘œํ˜„ํ•œ๋‹ค.

    ๊ธฐ๋ŠฅREST ๋ฉ”์„œ๋“œ์˜ˆ์‹œ URI์„ค๋ช…
    CreatePOST/students์ƒˆ๋กœ์šด ํ•™์ƒ ์ถ”๊ฐ€
    Read (์ „์ฒด)GET/students๋ชจ๋“  ํ•™์ƒ ๋ชฉ๋ก ์กฐํšŒ
    Read (๊ฐœ๋ณ„)GET/students/1id=1์ธ ํ•™์ƒ ์กฐํšŒ
    Update (์ „์ฒด ์ˆ˜์ •)PUT/students/1id=1 ํ•™์ƒ ์ •๋ณด ์ „์ฒด ์ˆ˜์ •
    Update (๋ถ€๋ถ„ ์ˆ˜์ •)PATCH/students/1id=1 ํ•™์ƒ ์ •๋ณด ์ผ๋ถ€ ์ˆ˜์ •
    DeleteDELETE/students/1id=1 ํ•™์ƒ ์‚ญ์ œ

    3. CRUD ๋™์ž‘ ํ๋ฆ„ ์˜ˆ์‹œ (ํ•™์ƒ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ)

    1. C (Create)

      • POST /students

      • ์ƒˆ๋กœ์šด ํ•™์ƒ "Tom" ๋“ฑ๋ก

    2. R (Read - ์ „์ฒด)

      • GET /students

      • ํ•™์ƒ ๋ชฉ๋ก: [{"id":1, "name":"Tom"}, {"id":2, "name":"Anna"}]

    3. R (Read - ๊ฐœ๋ณ„)

      • GET /students/1

      • ๊ฒฐ๊ณผ: {"id":1, "name":"Tom"}

    4. U (Update)

      • PUT /students/1

      • "Tom" โ†’ "Tommy"๋กœ ์ด๋ฆ„ ์ˆ˜์ •

    5. D (Delete)

      • DELETE /students/1

      • id=1 ํ•™์ƒ ์‚ญ์ œ ์™„๋ฃŒ


    4. ์™œ ์ค‘์š”ํ•œ๊ฐ€?

    • CRUD๋Š” ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋ณธ ๋ผˆ๋Œ€์ด๋‹ค.

    • ๊ฒŒ์‹œํŒ, ์‡ผํ•‘๋ชฐ, ์€ํ–‰ ์•ฑ, SNS ๋“ฑ ๋ชจ๋“  ์„œ๋น„์Šค๊ฐ€ CRUD๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

    • CRUD๋ฅผ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜๋ฉด ๋ฐ์ดํ„ฐ ํ๋ฆ„๊ณผ RESTful ์„ค๊ณ„ ์›์น™์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ตํž ์ˆ˜ ์žˆ๋‹ค.


    ์ •๋ฆฌ

    • CRUD = Create, Read, Update, Delete

    • Read๋Š” ์ „์ฒด ์กฐํšŒ์™€ ๊ฐœ๋ณ„ ์กฐํšŒ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค.

    • RESTful API์—์„œ CRUD๋Š” POSTโ€“GETโ€“PUT/PATCHโ€“DELETE๋กœ ๋งคํ•‘๋œ๋‹ค.

    • ๋ชจ๋“  ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ทผ๋ณธ์€ CRUD์—์„œ ์ถœ๋ฐœํ•œ๋‹ค.