github-blog.png


โœ๏ธ Today I Learned


1. Git


  • Git์ด๋ž€ ๋ถ„์‚ฐํ˜• ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(Version Control System) ์˜ ํ•œ ์ข…๋ฅ˜์ด๋ฉฐ, ๋น ๋ฅธ ์ˆ˜ํ–‰ ์†๋„์— ์ค‘์ ์„ ๋‘”๋‹ค.

    • โ€œ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œโ€ ์ด๋ž€ ํŒŒ์ผ ๋ณ€ํ™”๋ฅผ ์‹œ๊ฐ„์— ๋”ฐ๋ผ ๊ธฐ๋กํ–ˆ๋‹ค๊ฐ€ ์ดํ›„์— ํŠน์ • ์‹œ์ ์˜ ๋ฒ„์ „์„ ๋‹ค์‹œ ๊บผ๋‚ด์˜ฌ ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ์ด๋‹ค.

      ๋™์ผํ•œ ์ •๋ณด์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋˜๋ฉฐ, ๋ฒ„์ „์„ ํ†ตํ•ด ์‹œ๊ฐ„์ ์œผ๋กœ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ž‘์„ฑํ•œ ์ž‘์—…์ž๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋‹ค.



1-1. GitHub


  • Git์„ ํ†ตํ•˜์—ฌ ๋ฒ„์ „๊ด€๋ฆฌ๋ฅผ ํ•œ๋‹ค ์ด๋ฏธ ์–ธ๊ธ‰์„ํ•˜์˜€๋‹ค.

    ๊ทธ๋ ‡๋‹ค๋ฉด Github๋Š” ๋ฌด์—‡์ผ๊นŒ? Github๋Š” Git Repository๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค์ด๋‹ค.

    ์ฆ‰, Git์œผ๋กœ ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•˜๋Š” ํด๋”์— ๋Œ€ํ•ด์„œ Github์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ๋“ค์ด ๊ณต์œ ํ•˜๊ณ  ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ๋˜๊ธฐ๋•Œ๋ฌธ์— Git์ด ๋ถ„์‚ฐํ˜• ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์œผ๋กœ ๋ถˆ๋ฆฌ์šธ ์ˆ˜ ์žˆ๊ฒŒ๋œ๋‹ค.



1-2. Git Repository


  • ๋‚ด๊ฐ€ ์ž‘์—…ํ•˜๋Š” ์†Œ์Šค ์ฝ”๋“œ ํด๋”๊ฐ€ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ๋ฐ›๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‚ด ํด๋”๋ฅผ Git์˜ ๊ด€๋ฆฌ ์•„๋ž˜์— ๋‘์–ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ Git์œผ๋กœ ๊ด€๋ฆฌ๋˜๋Š” ํด๋”๋ฅผ Git repository ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

    Git repository ๋Š” Remote Repository์™€ Local Repository ๋‘ ์ข…๋ฅ˜์˜ ์ €์žฅ์†Œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

    • Remote Repository : ์›๊ฒฉ ์˜จ๋ผ์ธ ์„œ๋ฒ„ ์ƒ์˜ ์ €์žฅ์†Œ์ด๋‹ค. ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ํ•จ๊ป˜ ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

    • Local Repository : ๋‚ด ์ปดํ“จํ„ฐ์˜ ์ €์žฅ์†Œ์ด๋‹ค. ๊ฐœ์ธ ์ „์šฉ ์ €์žฅ์†Œ์ด๋ฉฐ ๋‚ด ์ปดํ“จํ„ฐ ์•ˆ์˜ ์ €์žฅ์†Œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜คํ”„๋ผ์ธ ์ž‘์—…๋˜ํ•œ ๊ฐ€๋Šฅํ•˜๋‹ค.

    git repository



1-3. Git์„ ํ†ตํ•œ ์ž‘์—…์‹œ WorkFlow


gitflow


  1. Remote์— ์žˆ๋Š” ๋‹ค๋ฅธ Repository์—์„œ Fork๋ฅผ ํ•ด์„œ Remote์— ์žˆ๋Š” ๋‚ด Repository์— ๊ฐ€์ง€๊ณ  ์˜จ๋‹ค.

  2. ์ด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‚ด ์ปดํ“จํ„ฐ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ์ž‘์—…์ด ๋˜ ํ•„์š”ํ•˜๋‹ค. ๋‚ด ์ปดํ“จํ„ฐ์—์„œ ์ž‘์—…์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ git clone์„ ํ•œ๋‹ค.

  3. ์ด์ œ ๋‚ด ์ปดํ“จํ„ฐ์˜ ์ž‘์—… ๊ณต๊ฐ„ (work space) ์—์„œ ์ž‘์—…์— ๋“ค์–ด๊ฐ„ ํŒŒ์ผ๋“ค์„ git์˜ ๊ด€๋ฆฌ ํ•˜์— ์žˆ๋Š” ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

    ์ด ์˜์—ญ์„ staging area๋ผ๊ณ  ๋งํ•œ๋‹ค. ์ฆ‰, staging area์— ๋“ค์–ด์˜ค์ง€ ์•Š์€ ํŒŒ์ผ์€ unstaged ํ˜น์€ untracked file์ด๋ผ๊ณ  ๋งํ•˜๋ฉฐ, staging area์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์€ staged ๋œ ํŒŒ์ผ์ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

    git commit ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ˜„์žฌ Local Repository์— ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ๋“ค์ด ์–ด๋–ค๊ฒƒ์ธ์ง€ ํ™•์ธํ•˜๋ ค๋ฉด git status๋ฅผ ํ†ตํ•˜์—ฌ staging area์™€ untracked files ๋ชฉ๋ก์— ์–ด๋–ค ๊ฒƒ๋“ค์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

  4. staging area์— ๋“ค์–ด์˜จ ํŒŒ์ผ๋“ค์€ git commit์ด ๊ฐ€๋Šฅํ•˜๋‹ค. commit์„ ํ•˜๊ณ  ๋‚˜๋ฉด ๋‚ด remote repository์— git push ํ•ด์„œ commit ๊ธฐ๋ก์„ remote ์—๋„ ๋‚จ๊ฒจ์ค„ ์ˆ˜ ์žˆ๋‹ค.

    ๋‚จ๊ธด commit๋“ค์ด ์ž˜ ๊ธฐ๋ก๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด git log๋ฅผ ํ†ตํ•˜์—ฌ ๋กœ๊ทธ๋“ค์„ ํ„ฐ๋ฏธ๋„ ์ฐฝ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

  5. git push๋ฅผ ์™„๋ฃŒํ•œ ํ›„ ์ด์ œ remote์˜ ์›๋ž˜ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ์— pull request๋ฅผ ๋ณด๋‚ด๋ฉด Remote Repository๋กœ ๋‚ด๊ฐ€ ์ˆ˜์ •ํ•œ ์ฝ”๋“œ๋ฅผ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค.



๐Ÿค” Understanding

  • ๊นƒ๊นƒ๊นƒ๊นƒ๊นƒ. ๋ง๋กœ๋งŒ ๋“ค์—ˆ์ง€ ์™œ ํ˜‘์—…์— ์œ ๋ฆฌํ•˜๋ฉฐ, ๋ถ„์‚ฐ๊ด€๋ฆฌ์— ์œ ๋ฆฌํ•˜๋ฉฐ.. ๋ฒ„์ „๊ด€๋ฆฌ์— ์œ ๋ฆฌํ•˜๋ฉฐ.. ๋งŽ์€ ๊ธฐ์—…๋“ค์ด ํ•ด๋‹น ํˆด์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์งง์€ ์‹œ๊ฐ„์ด์ง€๋งŒ ํฌ๊ฒŒ ์™€๋‹ฟ์•˜๋‹ค.

    ํ˜‘์—… ๊ณผ์ • ์ค‘ commit์„ ๋“ค์—ฌ๋‹ค๋ณด๋ฉด ๋ˆ„๊ฐ€..์–ธ์ œ..๋ช‡๋ถ„์ „์—.. ๋ฌด์Šจ์ž‘์—…์„..๋ฌด์Šจ์ฝ”๋“œ๋ฅผ ๋ป˜์ง“(?)๊ฑฐ๋ฆฌ ํ•˜์˜€๋Š”์ง€ ์ ๋‚˜๋ผํ•˜๊ฒŒ ๋‚˜์˜ค๋Š”๊ฑธ ๋ณด๋‹ˆ ์ •๋ง ํˆฌ๋ช…ํ•˜๊ณ  ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฝ”๋“œ์œ ์ง€๊ฐ€ ๋œ๋‹ค๋Š” ๋Š๋‚Œ์„ ๋ฐ›์•˜๋‹ค.

  • ๋ฆฌ์•กํŠธ ์„ ํ–‰ํ•™์Šต ์œ„ํ•ด ์„ ์ •ํ•œ ์ฝ”๋”ฉ์• ํ”Œ ์œ ํŠœ๋ธŒ ๊ฐ•์˜๊ฐ€ ์•Œ๊ณ ๋ณด๋‹ˆโ€ฆ์œ ๋ฃŒ ๊ฐ•์˜์˜€๋‹ค.

    ์œ ํŠœ๋ธŒ ์ฝ”๋”ฉ์•™๋งˆ ๋‹˜์˜ ์ˆ˜์—…์ด ์œ ์ตํ•ด๋ณด์ด๋ฉฐ ๋๊นŒ์ง€ ๋ฌด๋ฃŒ๋กœ ์ˆ˜๊ฐ•์ด ๊ฐ€๋Šฅํ•ด๋ณด์ธ๋‹ค. ๋ฆฌ์•กํŠธ ํด๋ก  ์ฝ”๋”ฉ ๋ฐ ๋”ฐ๋ผํ•˜๊ธฐ ๊ฐ•์˜๋Š” ์šฐ์„  ์ฝ”๋”ฉ์•™๋งˆ ์ฑ„๋„๋กœ ์ง„ํ–‰ํ•ด๋ณผ ์˜ˆ์ •์ด๋‹ค.