Session 7. Git & GitHub

๊น€๋ฏผ์žฌยท2021๋…„ 8์›” 25์ผ
0

TIL, WeCode, Courseย 

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

*๐Ÿ”Study Keyword :

  • ๐Ÿ—๏ธGit์˜ ๊ฐœ๋…๊ณผ ํ•„์š”์„ฑ๊ณผ Git & GitHub์˜ ์ฐจ์ด์— ๋Œ€ํ•ด์„œ ์ธ์ง€ํ•˜๋ฉฐ
    ๐Ÿ—๏ธํ„ฐ๋ฏธ๋„ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด ๊ธฐ๋ณธ์ ์ธ Git ์‚ฌ์šฉ๋ฒ•๊ณผ ๐Ÿ—๏ธGitHub๋ฅผ ์‚ฌ์šฉํ•œ ๊ฐœ๋ฐœ ํ˜‘์—…๊นŒ์ง€ ์•Œ์•„๋ณด์ž.

-keynote

1. Git

-WHAT ISโ“

  • โ˜GIT์ด๋ž€VERSTION ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด๋‹ค

-์ฝ”๋“œ์˜ ๋ฒ„์ ผ์„ ๊ด€๋ฆฌํ•ด์•ผํ•˜๋Š” ์ด์œ ๋Š” ์ €์žฅ, ์ฆ‰ `๋ฐฑ์—…`์„ ํ•ด๋‘๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•˜๋‹ค.

- ์ฝ”๋“œ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ด์œ ?

  1. ์ˆ˜์ •ํ•  ๋•Œ ๋งˆ๋‹ค ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋ฉด ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ต๋‹ค.
  2. ์–ธ์  ๊ฐ€ ์ด์ „ ์ฝ”๋“œ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.
  3. ์ž์‹ ์˜ ์ž‘์—…์— ๋Œ€ํ•œ ์ด๋ ฅ์„ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
  4. ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋‘๊ณ  ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๋“ค ํ˜‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ๋งˆ๋ จํ•˜๊ธฐ ์œ„ํ•ด์„œ

-๊นƒ ์„ค์น˜ ๊ด€๋ จ ๋ช…๋ น์–ด'S

git --version, ๊นƒ ์„ค์น˜ํ›„ ๋ฒ„์ ผ ํ™•์ธํ•˜๋Š” ๋ช…๋ น์–ด
git config --global user.name "์ด๋ฆ„"
git config --global user.email "์ด๋ฉ”์ผ", ๊นƒ์˜ ๋ณธ์ธ ์ •๋ณด๋ฅผ ๋“ฑ๋กํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด

-Repositories(์ €์žฅ์†Œ)?

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

2. GitHub

-WHAT ISโ“

  1. ๐Ÿ‘GitHub์ด๋ž€ โ˜Git์„ ์‚ฌ์šฉํ•œ ํ”„๋กœ์ ํŠธ๋“ค์˜ ์ €์žฅ์†Œ๋ฅผ ๋งํ•œ๋‹ค.
  2. ๋‹ค๋ฅธ ์˜๋ฏธ๋กœ๋Š” ๊ฐœ๋ฐœ์ž๋“ค์˜ Social network service์ด๋‹ค.
    => ์ฆ‰ โ˜Git์€ ํ”„๋กœ์ ํŠธ์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ๋„์™€์ฃผ๋Š” ์‹œ์Šคํ…œ์ด๊ณ  GitHub๋Š” โ˜Git์„ ์ด์šฉํ•ด ๋ฒ„์ „๊ด€๋ฆฌ๋ฅผ ํ•œ ํ”„๋กœ์ ํŠธ๋“ค์„ ๊ด€๋ฆฌํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค์ด๋‹ค.

<Git & GitHub ๊ด€๊ณ„>

  • ๋”ฐ๋ผ์„œ Git์ด๋ผ๋Š” ๋ฒ„์ „๊ด€๋ฆฌ ์‹œ์Šคํ…œ์œผ๋กœ ๊ด€๋ฆฌํ•œ ์ฝ”๋“œ, ํ”„๋กœ์ ํŠธ๋“ค์„ ๋ชจ์•„๋‘๋Š” ๊ณณ ๋ฐ”๋กœ GitHub์ด๋‹ค.

STEP1) 1>Local => 2>Remote

  • Git์„ CLI๋กœ ๋‹ค๋ฃจ๋Š” ๊ฑด ๊ฐ€์žฅ ์ค‘์š”ํ•˜๊ณ , ๊ธฐ๋ณธ์ ์ธ ๋ช…๋ น์–ด๋“ค์ด๋‹ค. ๋งŽ์ด ์‚ฌ์šฉํ•˜์—ฌ ์ต์ˆ™ํ•ด์ง€์ž.

  • Local์€ ์šฐ๋ฆฌ์˜ Laptop์„ ์˜๋ฏธ, Remote๋Š” Github๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
    ์œ„ ์ด๋ฏธ์ง€๋Š” Local์—์„œ Remote๋กœ Pushํ•˜๋Š” Flow๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

    - ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“œ๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ•œ๋‹ค ๊ฐ€์ •ํ•ด๋ณด์ž. ์ž‘์—… ๊ณผ์ •์—” ์—ฌ๋Ÿฌ ๋ฒ„์ ผ์ด ์กด์žฌํ•˜๋Š”๋ฐ ์ด๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด git & github์„ ์ด์šฉํ•ด์•ผํ•œ๋‹ค.

    1. git ์‹œ์ž‘์„ ์œ„ํ•œ ๋ช…๋ น์–ด git init : ๊นƒ์„ ์‹œ์ž‘, ๋ ˆํฌ์ง€ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ ๋‹ค.
      (Git์€ ์ˆจ๊ฒจ์ง„ .git ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ด ํ˜„์žฌ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ถ”์ /๊ด€๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ)
    1. git ์ƒํƒœ ํ™•์ธ์„ ์œ„ํ•œ ๋ช…๋ น์–ด : git status , ์–ด๋–ค ํŒŒ์ผ์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€, ์–ด๋–ค ํŒŒ์ผ์ด ์ถ”๊ฐ€๋˜์—ˆ๋Š”์ง€ ๋ณด์—ฌ์ค€๋‹ค.
    1. ํŒŒ์ผ ์ˆ˜์ • ์ด๋ ฅ ๊ธฐ๋ก์„ ์ค€๋น„ํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด : git add .
      (ํ”„๋กœ์ ํŠธ ํด๋” ๋‚ด์˜ ๋ชจ๋“  ํŒŒ์ผ๊ณผ ํด๋”๋ฅผ staging area์— ์ถ”๊ฐ€ํ•˜๊ณ  ์ปค๋ฐ‹์„ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๊ฒŒ ์ค€๋น„ํ•ด์ค€๋‹ค.)
    1. ํŒŒ์ผ ์ˆ˜์ • ์ด๋ ฅ์„ ์‹ค์ œ๋กœ ๊ธฐ๋กํ•˜๋Š” ๋ช…๋ น์–ด : git commit -m "mesaage"
      (์ปค๋ฐ‹์€ ํŠน์ • ์‹œ๊ฐ„์˜ ์ฝ”๋“œ ์Šค๋ƒ…์ƒท์˜ ํ˜•ํƒœ๋กœ ํ•ด๋‹น repository์˜ ์ปค๋ฐ‹ ๊ธฐ๋ก์— ๋‚จ๊ฒจ git add ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ํŒŒ์ผ์„ staging area์— ์ถ”๊ฐ€ํ•˜๋ฉด commit ๊ฐ€๋Šฅํ•˜๋‹ค.)
    1. ๋กœ์ปฌ repository๋ฅผ GitHub repository ์™€ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ๋ช…๋ น์–ด : git remote add origin https://github.com/<your-username>/<your-repo-name>.git
      (๋กœ์ปฌ Git repository์—๊ฒŒ ์ด๋ฆ„์ด origin ์ด๋ผ๋Š” ์–ด๋–ค URL์„ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์›๋ฆฌ)
    1. ๋กœ์ปฌ Git repository์˜ ์ฝ”๋“œ๋ฅผ GitHub repository ๋กœ ์—…๋กœ๋“œ ํ•ด์ฃผ๋Š” ๋ช…๋ น์–ด : git push ๋ช…๋ น์–ด
  • 7(3~5). Local ์ €์žฅ์†Œ์— ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์ƒ๊ธฐ๋ฉด Local์—์„œ ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ Remote์— ๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•ด
    • ๋‹ค์‹œ git add . ํ›„์— git commit -m "Add:์ˆ˜์ •์‚ฌํ•ญ์œผ๋กœ ์ž‘์—… ๋‹จ์œ„๋ฅผ ๋‚˜๋ˆ ์ค€ ๋’ค
    • git push origin master๋ฅผ ํ•ด์ค˜์•ผ Local repo๋ฅผ GitHub repo๋กœ push๋˜์–ด ์—…๋ฐ์ดํŠธ๋œ๋‹ค.
  • ๊นƒ์˜ ์ปค๋ฐ‹ ๋‚ด์—ญ์˜ ํžˆ์Šคํ† ๋ฆฌ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด git log : ์ž‘์„ฑ์ž, hash ๊ฐ’, ๋‚ ์งœ์™€ ์‹œ๊ฐ„, ๊ทธ๋ฆฌ๊ณ  ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.
  • ํŠน์ • ์ปค๋ฐ‹ ์‹œ์ ์˜ ์ฝ”๋“œ๋กœ ๋˜๋Œ๋ฆฌ๋Š” ๋ช…๋ น์–ด git checkout <commit-hash> : <commit-hash>์—์„œ git log์— ๋ณด์ด๋Š” ์ปค๋ฐ‹์˜ ์‹ค์ œ hash ๊ฐ’์œผ๋กœ ๋Œ€์ฒดํ•ด์ฃผ๋ฉด ์ปค๋ฐ‹ ์‹œ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๋˜๋Œ๋ฆฐ๋‹ค.
  • staging area์— ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์ง€ ์•Š๊ฑฐ๋‚˜, git ์—์„œ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š” ๋ช…๋ น์–ด: .gitignore (ํŒŒ์ผ์„ ํ”„๋กœ์ ํŠธ ํด๋”์— ์ƒ์„ฑํ•˜๊ณ  .gitignore ํŒŒ์ผ ์•ˆ์—, ํ•ด๋‹นํ•˜๋Š” ํŒŒ์ผ๋ช…๊ณผ ํด๋”๋ช…์„ ๋‚˜์—ดํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • ๊นƒ ์ƒ์—๋Š” 2๊ฐœ์˜ ๊ณต๊ฐ„์ด ์กด์žฌํ•œ๋Š”๋ฐ(staging area์™€ repository) add์™€ commit ๋ช…๋ น์–ด๋ฅผ ๊ตฌ๋ถ„ํ•ด์„œ ์‚ฌ์šฉํ•ดํ•ด์•ผ ํ•œ๋‹ค.

- add ๋ช…๋ น์–ด์™€ commit ๋ช…๋ น์–ด

  • ์ด๋•Œ ๋งํ•˜๋Š” ์ž‘์—… ๋‚ด์—ญ ์ฆ‰, ์ž‘์—…์˜ ๋‹จ์œ„๋ฅผ ๐Ÿ“กcommit์ด๋ผ๊ณ  ํ•œ๋‹ค.
  • ๐Ÿ“ขadd ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๐Ÿ“กcommit์„ ํ•˜๊ธฐ ์œ„ํ•œ ๊ณต๊ฐ„์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.
  • ๐Ÿ“ขadd ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ณต๊ฐ„์„ ํ•œ ๊ณณ์œผ๋กœ ๋ชจ์•„ ์ž„์‹œ ์ €์žฅ์†Œ ๊ฐ™์€ ๊ณต๊ฐ„์„ ๋งŒ๋“ค์–ด์ง„๋‹ค.
  • => ์ด๋ฅผ ์ž‘์—… ๋‹จ์œ„๋กœ ๋ชจ์œผ๊ธฐ ์œ„ํ•ด์„œ ๋กœ๊ทธ์ธ ์ž‘์—…์„ ํ•œ ์ฝ”๋“œ๋“ค์„ ํ•˜๋‚˜์˜ ๐Ÿ“กcommit ๋‹จ์œ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ์ฆ‰ ๋ช…๋ น์–ด๋กœ ์ด๋ฆ„์„ ๋ถ™์—ฌ ๋ชจ์—ฌ์ฃผ๊ฒŒ ๋งŒ๋“ค์–ด์ค€๋‹ค.
    ์ด๋–„ ๐Ÿ“กcommit์„ ํ•˜๋ฉด์„œ ์ž‘์—… ๋‹จ์œ„๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋ฉ”์„ธ์ง€๋ฅผ ํ•จ๊ป˜ ์ ์–ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

์ฐธ๊ณ โœจ)

  • ์ˆ˜์ •ํ•˜๊ณ  status ๋ช…๋ น์–ด๋ฅผ ์จ๋„ ๐Ÿ“กcommit์„ ์•ˆํ•œ ๋‚ด์šฉ์€ Git์— ๋“ค์–ด๊ฐ€์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค

<๊ณผ์ • ์š”์•ฝ>

  • 1.git init = ํด๋”๋ฅผ git์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ฒ ๋‹ค๋Š” ๋ช…๋ น์–ด
    1. git add . = commit ํ•˜๊ธฐ ์ „ ์ค€๋น„๋‹จ๊ณ„์˜ ๊ณต๊ฐ„์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ช…๋ น์–ด
    • git add .์˜ dot์€ ํ˜„์žฌํด๋”์•ˆ์—์žˆ๋Š” ์ „๋ถ€๋ฅผ ์˜๋ฏธ.
    1. commit = ํ•˜๋‚˜์˜ ์ž‘์—… ๋‹จ์œ„(๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€ ๋“ฑ์˜ ์ž‘์—… ๋‚ด์—ญ)๊ฐ€ commit.
    • โœ” git add & commit
      • add ๋ช…๋ น์–ด๋Š” commit์„ ํ•˜๊ธฐ ์œ„ํ•œ ์ค€๋น„ ๋‹จ๊ณ„์˜ ๋ช…๋ น์–ด
      • commit ๋ช…๋ น์–ด์—๋Š” ๋ฉ”์„ธ์ง€(= ์–ด๋–ค ์ž‘์—…๋‚ด์—ญ์ด ์ถ”๊ฐ€๋˜๊ณ  ์‚ญ์ œ๋˜์—ˆ๋Š”์ง€ ๋“ฑ ๋‹ค๋ฅธ ์‚ฌ๋žŒํ•œํ…Œ ์•Œ๋ ค์ฃผ๋Š” ๋‚ด์šฉ์ด ํฌํ•จ)๊ฐ€ ํฌํ•จ
      • ๋ณดํ†ต ์ด ๋ฉ”์„ธ์ง€์˜ ํ˜•์‹์€ ํšŒ์‚ฌ์˜ convention์„ ๋”ฐ๋ฅธ๋‹ค.
  • 4. git status = ์ƒํƒœ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋ช…๋ น์–ด์ด๋‹ค

TIP_ONE๐Ÿ’ฅ)

  • ํŒŒ์ผ ์ž‘์—… commit ์ค‘๊ฐ„์— statusํ•˜๋Š” ์Šต๊ด€์„ ๊ฐ€์ ธ ํ™•์ธํ•˜๋ฉฐ ์ง„ํ–‰ํ•˜์ž.
    TIP_TWO๐Ÿ’ฅ)
  • commit ํ•œ ๋‚ด์—ญ์„ ๋ณผ๋ ค๋ฉด git log ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด commit ID๊ฐ€ ๋‚˜์™€ ์ด ID๋ฅผ ํ†ตํ•ด ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๊ณ  qํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด log ํ™”๋ฉด์—์„œ ๋‚˜๊ฐ„๋‹ค.
  • ํ˜„์žฌ๊นŒ์ง€์˜ ๊ณผ์ •์€ 1>Local => 2>Remote, ์ฆ‰ ๋‚˜์˜ ๋žฉํƒ‘์—์„œ github๋กœ์˜ ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰ํ•œ ๊ณผ์ •์œผ๋กœ
  • 4๋ฒˆ ๊นŒ์ง€ ๋งˆ์นœ ํ›„ ๊นƒ ํ—ˆ๋ธŒ ์‚ฌ์ดํŠธ์— ๋“ค์–ด๊ฐ€ ๋ ˆํผ์ง€ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑ(public์€ ๋ชจ๋‘์—๊ฒŒ ๊ณต๊ฐœ)ํ•œ๋‹ค.
  • remote orginal ์ฃผ์†Œurl ๋ช…๋ น์–ด, ํ†ตํ•ด ๋‚˜์˜ git ํด๋”๋ฅผ ์–ด๋””์— ๋ณด๋‚ผ์ง€๋ฅผ URL ์ฃผ์†Œ ํ˜•์‹์œผ๋กœ ์ €์žฅ์†Œ ์ฃผ์†Œ๋ฅผ ์ ์–ด ์—ฐ๊ฒฐํ•ด์ค€๋‹ค.
  • ๋‚˜์˜ ์ €์žฅ์†Œ๊ฐ€ remote ์˜์—ญ์˜ ๊นƒํ—ˆ๋ธŒ์™€ ์ž˜ ์—ฐ๊ฒฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด git remote -v
  • ๋‚˜์˜ ํด๋”๋ฅผ ์ €์žฅ์†Œ์™€ ์—ฐ๊ฒฐํ•œ ํ›„ ๋‚˜์˜ ํด๋”๋ฅผ ์ €์žฅ์†Œ์— ์˜ฌ๋ ค์ค„ ์ˆ˜ ์žˆ๋Š” git push ๋ช…๋ น์–ด๊นŒ์ง€
    Local -> Remote๋กœ์˜ Flow์ด๋‹ค.
    '

STEP2) Remote => Local

  • ๋ฒ„์ ผ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ 1> Git init, 2>git add, 3>git commit Local์—์„œ ์ž๋ฃŒ ๋นˆ ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค๊ณ  ๋น„์–ด์žˆ๋Š” ๊ณณ์—๋‹ค ๋„ฃ๋Š” ๊ฑด ์‰ฌ์šด ํŽธ์ด๋‹ค.
  • ์ด๋ฒˆ์—” ์ด๋ฏธ ์ €์žฅ์†Œ์— ๋“ค์–ด์˜จ ์ž๋ฃŒ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Remote์—์„œ Local๋กœ Flow์„ ๊ฐ€์ ธ๊ฐ€์•ผํ•œ๋‹ค.

-WHAT ISโ“

  • Remote์—์„œ Local์˜ Flow๋Š” ๊นƒ ํ—ˆ๋ธŒ ์ƒ์— ์กด์žฌํ•˜๋Š” ์ €์žฅ์†Œ์— ๋ฌด์–ธ๊ฐ€๊ฐ€(๋ณดํ†ต ํšŒ์‚ฌ์˜ ์ €์žฅ์†Œ) ๋“ค์–ด๊ฐ€ ์žˆ๊ณ  STEP1์˜ Local์—์„œ ๋งŒ๋“  ๋‚˜์˜ ์ €์žฅ์†Œ, ์ฆ‰ Local ๋ ˆํผ์ง€ํ† ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ํ๋ฆ„์„ ๊ฐ€์ง„๋‹ค.

  • ์ด ๊ณผ์ •์„ Git clone์ด๋ผ๊ณ  ํ•œ๋‹ค.
    • ์ด๋•Œ STEP1 ๊ณผ์ •๊ณผ ๋‹ค๋ฅธ ๊ฑด ๊ตณ์ด ์ €์žฅ์†Œ๋ฅผ ์—ฐ๊ฒฐ์„ ํ•  ํ•„์š”๊ฐ€ ์—†์–ด์ง„๋‹ค๋Š” ์ ์œผ๋กœ, Git ํด๋”์™€ ์ €์žฅ์†Œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” remote ๊ณผ์ •์ด ์—†์–ด๋„ ๋œ๋‹ค.
  • branch๊ฐ€ default๋กœ master(ํ˜„์žฌ main ๋ฐ”๋€Œ์—ˆ๊ณ )๋กœ ์ด ์ €์žฅ์†Œ ํ•˜๋‚˜์— ๋ชจ๋‘์˜ git ํด๋”๋ฅผ ๋ชจ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋‘๊ฐ€ master branch์—์„œ ์ž‘์—…์„ ๋’ค push๋ฅผ ํ•˜๋ฉด ์ž‘์—…๊ณต๊ฐ„์ด ๊ฒน์น˜๊ฒŒ๋˜์–ด ์ถฉ๋Œ์ด ์ผ์–ด๋‚  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์–ด๋–ค ์ž‘์—…์ด๋“  ํ•ญ์ƒ ์ž‘์—…๋‚ด์—ญ์„ ๋‚˜๋ˆ„๊ณ  ์ง„ํ–‰ํ•ด์•ผํ•œ๋‹ค

-WHAT ISโ“

  • ์ด๋ ‡๊ฒŒ ์ž‘์—…๊ณผ์ •์„ ๋‚˜๋ˆ„๊ธฐ ์œ„ํ•ด branch๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋‚˜๋ˆˆ๋‹ค.
    -branch๋ž€ ๋…๋ฆฝ์ ์œผ๋กœ ์–ด๋–ค ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐœ๋…์œผ๋กœ ํ•„์š”์— ์˜ํ•ด ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฐ๊ฐ์˜ branch๋Š” ๋‹ค๋ฅธ branch์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™์‹œ์— ์ง„ํ–‰ํ•˜๋Š” ๋ฐ ์šฉ์ดํ•˜๋‹ค.
    • branch์ž์ฒด๋ฅผ ๋‚˜๋ˆ ์„œ ์ƒ์„ฑํ•˜๋Š”๋ฐ ์œ„ ์ด๋ฏธ์ง€์˜ git branch feature/login๊ณผ ๊ฐ™์ด ์ž‘์—…๋‚ด์—ญ์„ ๋‚˜๋ˆ„๊ธฐ ์œ„ํ•ด 1>branch ์ž์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ž‘์—… ๊ณผ์ •์„ ๋‚˜๋ˆ„๊ณ  2>๋งŒ๋“  branch์˜ ์ž‘์—… ๊ณต๊ฐ„(master branch์—์„œ ๋‹ค๋ฅธ branch๋กœ)์œผ๋กœ ์ด๋™์‹œ์ผœ์•ผํ•œ๋‹ค.
  • ์™œ master์—์„œ ์ž‘์—…ํ•˜๋ฉด ์•ˆ๋˜์œ ๐Ÿคทโ€โ™‚๏ธ?

๐Ÿ™†โ€โ™€๏ธ ์™œ๋ƒ๋ฉด master branch๋Š” ์œ ์ €์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” ์ตœ์ข…์ ์ธ branch๋“ค ๋ณดํ†ต ๋“ค์–ด๊ฐ„๋‹ค.
=> ๋”ฐ๋ผ์„œ ๋งˆ์Šคํ„ฐ(๋ฉ”์ธ)์— ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด๊ฐ€๊ธฐ์œ„์„œ๋Š” refactoring์ด ๋œ ๊น”๋”ํ•œ ์ฝ”๋“œ๋“ค'๋งŒ'์ด ๋“ค์–ด๊ฐ„๋‹ค!

    1. git clone์„ ํ†ตํ•ด ํšŒ์‚ฌ์˜ ์ฝ”๋“œ๋ฅผ ๋ฐ›์•„์˜จ๋‹ค. git clone์€ ์ตœ์ดˆ์— ๋ ˆํผ์ง€ํ† ๋ฆฌ์—์„œ ์ž‘์—…์„ ํ•  ๋•Œ๋งŒ ํ•ด์ค€๋‹ค. ํด๋ก  ํ•  ์ฃผ์†Œ๋Š” ๊นƒํ—ˆ๋ธŒ์—์„œ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐํ•œ๋‹ค
    1. ํ•ญ์ƒ git branch feature/login(branchName), branch๋ฅผ ๋งŒ๋“œ๋Š” ๊ฑธ๋กœ ์‹œ์ž‘ํ•œ๋‹ค.
      • TIP1๐Ÿ’ก) branch ์ƒ์„ฑ๊ณผ ๋™์‹œ์— ์ƒ์„ฑ๋œ branch๋กœ ์ด๋™ํ•˜๋Š” ๋ช…๋ น์–ด git checkout -b <new-branch-name>๋กœ ๊ธฐ์กด checkout ๋ช…๋ น์–ด์— -b, flag๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.
      • TIP2๐Ÿ’ก) ํ”„๋กœ์ ํŠธ์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๋ธŒ๋žœ์น˜๋ฅผ ํ™•์ธํ•˜๋Š” ๋ช…๋ น์–ด๋Š” git branch
      • TIP3๐Ÿ’ก) ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด git branch -d <branch-name> (์‚ฌ์šฉ ์‹œ ์ฃผ์˜)
    1. branch๋ฅผ ์˜ฎ๊ธฐ๊ธฐ ์œ„ํ•ด์„œ ์ž‘์—…ํ•˜๊ธฐ ์œ„ํ•œ ํด๋”๋กœ ์ด๋™ ํ›„ git cheack feature/login์„ ํ•ด์ค€๋‹ค.
    1. ์ด๋™์„ ๋งˆ์น˜๊ณ  ์ž‘์—…ํ•œ ๋‚ด์šฉ๋“ค์„ git add, commit ํ•ด์ค€ ๋’ค git push๋ฅผ ํ•ด์ฃผ๋ฉด ์ƒ์„ฑํ•œ feature/login branch๊ฐ€ ๊นƒํ—ˆ๋ธŒ์— ์ƒ๊ฒจ๋‚œ๋‹ค.
    • Local์—์„œ ์ƒ์„ฑํ•œ branch์˜ feature/login์—์„œ ์ž‘์—…ํ•œ ์ฝ”๋“œ๋ฅผ Pushํ•˜๋ฉด Remote ์˜์—ญ์˜ Github master branch์—” ๋‚ด๊ฐ€ ์ž‘์—…ํ•œ ๋‚ด์šฉ์ด ๋“ค์–ด๊ฐ€ ์žˆ๊ฒŒ๋œ๋‹ค.
    1. commitํ•˜์—ฌ Remote์˜์—ญ์œผ๋กœ pushํ•œ ์ฝ”๋“œ๋ฅผ master branch๋กœ ๋ณด๋‚ด์ฃผ๋Š” ์ž‘์—…์„ pull request/PR**์ด๋ผ ๋ถ€๋ฅธ๋‹ค.
    • ์ด๋•Œ๋Š” ๋ณดํ†ต PR template,(ํšŒ์‚ฌ์˜ ์ปจ๋ฒค์…˜ ๋”ฐ๋ฅธ๋‹ค.)๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ๋ณธ์ธ์˜ ์š”์ฒญ์‚ฌํ•ญ์ด๋‚˜ ๋‚ด์šฉ์„ ํ•จ๊ป˜ ์ ์–ด์„œ ๋ณด๋‚ด์ค€๋‹ค.
    1. Local ์˜์—ญ์˜ branch์—์„œ ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ Github์˜ master branch์— ์ ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ, ์ฆ‰ branch A ์™€ branchB ๋ฅผ ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์žˆ์–ด marge ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉด ์ƒ์„ฑํ•œ feature login, branch๊ฐ€ ํšŒ์‚ฌ์˜ master branch์™€ ํ•ฉ์ณ์ง„๋‹ค.
    • 5_1> ํŠน์ • branch์—์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์™„๋ฒฝํžˆ ๊ตฌํ˜„ ํ›„ ํ…Œ์ŠคํŠธ๊นŒ์ง€ ์™„๋ฃŒํ•œ ์‹œ์ ์—์„  ๊ธฐ์ค€์ด ๋˜๋Š” master branch์— ๊ตฌํ˜„๋‚ด์šฉ์„ ์ ์šฉ์‹œํ‚ค ์œ„ํ•ด์„œ merge ๋ช…๋ น์–ด๋กœ ํ•ฉ์ณ์ค€๋‹ค.
    • 5_2> ์ด๋ ‡๊ฒŒ ๋ฆฌ๋ทฐ ๋‚ด์šฉ์ด ๋ฐ˜์˜๋œ ํ›„ master branch์™€ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด, PRํ•œ master branch๋กœ mergeํ•  ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋œ ๊ฒƒ์ด๋‹ค.
  • ์ฝ”๋“œ๊ฐ€ ์—…๋ฐ์ดํŠธ ๋˜์žˆ๋Š” ์ƒํ™ฉ์ด Remote์—์„œ๋งŒ ์ง„ํ–‰๋œ ์ƒํƒœ๋กœ Local ์˜์—ญ์˜ master branch์—๋„ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•ด์ค˜์•ผํ•œ๋‹ค.
    1. git pull origin master ๋ช…๋ น์–ด์„ ํ†ตํ•ด ์—…๋ฐ์ดํŠธ๋œ Remote ์˜์—ญ master branch๋ฅผ ๋‚˜์˜ Local ์˜์—ญ์˜ master branch๋กœ ์ด๋™์‹œํ‚จ๋‹ค.
    • git pull ๋ช…๋ น์–ด๋ฅผ ์“ฐ๋ฉด Github์— ์žˆ๋Š” master branch๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™€ ์ด ์‹œ์ ๋ถ€ํ„ฐ ์—…๋ฐ์ดํŠธ ๋œ ์ž‘์—… ๋‚ด์—ญ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค,
    • ์ฆ‰ git pull์„ ๊ฑฐ์ณ์•ผ Local ์˜์—ญ, ๋‚˜์˜ ๋…ธํŠธ๋ถ์— ์กด์žฌํ•˜๋Š” Local์˜์—ญ์˜ master branch์—๋„ ์—…๋ฐ์ดํŠธ๋œ ๋‚ด์šฉ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“›์ฃผ์˜๐Ÿ“›)์‹ค์ˆ˜๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•˜๋Š” ๋ถ€๋ถ„

    1. ๊ธฐ์กด์˜ branch, feature/login์—์„œ ์ƒˆ๋กœ์šด branch๋ฅผ ๋˜ ํŒŒ๊ฒŒ๋˜๋ฉด(์ƒ์„ฑํ•˜๋ฉด) ๊นŠ์€ ํ˜•ํƒœ์˜ branch ๊ตฌ์กฐ๊ฐ€ ๋งŒ๋“ค์–ด์ ธ์ข‹์ง€ ์•Š๋‹ค.
  • ๋ฉ”์ธ ์ค„๊ธฐ์—์„œ branch์˜ ๊ฐ€์ง€๊ฐ€ ํ•˜๋‚˜์”ฉ๋งŒ ๋‚˜์˜ค๋Š” ํ˜•ํƒœ๊ฐ€ ๊ฐ€์žฅ ์ข‹๊ธฐ๋•Œ๋ฌธ์— ๋ธŒ๋žœ์น˜๋Š” ํ•œ ๋ฒˆ๋งŒ ํŒŒ๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ด๋‹ค.
    1. ์„œ๋กœ์˜ branch๊ฐ€ ๊ฒน์น˜๋ฉด ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋‹ˆ ์กฐ์‹ฌํ•ด์•ผํ•œ๋‹ค.

<์š”์•ฝ>

1. git clone <Url์ฃผ์†Œ>, ๊นƒํ—ˆ๋ธŒ ๋ ˆํผ์ง€ํ† ๋ฆฌ๊ฐ€ ์žˆ์–ด ๊ทธ ์ €์žฅ์†Œ์˜ ์ฃผ์†Œ๊ฐ’ ๋ณต์‚ฌํ•ด์„œ ํด๋ก ํ•˜์—ฌ ๊ฐ€์ ธ์˜จ๋‹ค.
2. cd ๋ช…๋ น์–ด๋กœ ์ž‘์—…ํ•˜์—ฌ branch๋ฅผ ์ƒ์„ฑํ•  ํด๋”๋กœ ์ด๋™ํ•œ๋‹ค
3. pwd๋กœ ๊ฒฝ๋กœ ํŒŒ์•… ํ›„ git branch <new-branch-name> ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ž‘์—… ๋ถ„๋ฆฌ๋ฅผ ์œ„ํ•œ branch๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค.
4. git checkout <branch-name> ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ƒ์„ฑํ•œ branch๋ฅผ ์ž‘์—…ํ•  ํด๋”๋กœ ์ด๋™์‹œํ‚ค๋ฉด termianl ์ฐฝ ์˜†์˜ ๋‚˜์˜ ์ž‘์—… ๋‹จ์œ„๊ฐ€ main์—์„œ ์ƒ์„ฑํ•œ ๋ธŒ๋žœ์น˜ ๋ช…์œผ๋กœ ๋ฐ”๋€๋‹ค.

  • ์ฃผ์˜๐Ÿ“›) Remote => Local Flow์—์„ 
    • git initํ•  ํ•„์š” โŒ
    • remote๋„ ํ•  ํ•„์š” โŒ
  1. git add . > commit -m "Add: ์ž‘์—…", ์ž‘์—…ํ•œ ๋ธŒ๋žœ์น˜๋ฅผ git add ํ›„์— commit ๋‹จ์œ„๋กœ ๋‚˜๋ˆ ์ค€๋‹ค.
  2. git pushํ•˜์—ฌ Remote`์˜์—ญ์œผ๋กœ branch์—์„œ ์ž‘์—…ํ•œ ์ž‘์—…ํ•œ ๋‚ด์—ญ์„ ์˜ฌ๋ ค์ฃผ๋ฉด ๊นƒํ—™ ์‚ฌ์ดํŠธ์—` pull repositort**๋Š” ๋ฒ„ํŠผ์ด ์ƒ๊ธฐ๊ณ  ํด๋ฆญํ•˜์—ฌ ํ•ด๋‹น ๋งํฌ๋กœ ์ด๋™ํ•œ๋‹ค.
  3. ์˜ต์…˜๋“ค์„ ์„ค์ •ํ•˜๊ณ ๋‚˜์„œ ์ตœ์ข…์ ์œผ๋กœ PR์„ ๋‚ ๋ ค์ค€๋‹ค.

*๐Ÿ’กconclusion

  • ์ง€๊ธˆ๊นŒ์ง€ ์‚ดํŽด๋ณธ ๊ณผ์ •์„ ๋ช…๋ น์–ด์™€ ํ•จ๊ป˜ ์ต์ˆ™ํ•ด์งˆ ๋•Œ๊นŒ์ง€ ์‚ฌ์šฉํ•ด ๋ˆ„๊ตฐ๊ฐ€์— ์„ค๋ช…ํ•  ์ •๋„์˜ ์ˆ˜์ค€์ด ๋˜์•ผํ•œ๋‹ค.
  • Local => Remote ๋ฐฉํ–ฅ์œผ๋กœ์˜ Flow์™€ Remote => Local ๋ฐฉํ–ฅ์œผ๋กœ์˜ Flow 2๊ฐ€์ง€ ๋ชจ๋‘ ์œ„ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ๋จธ๋ฆฌ์†์— ๊ทธ๋ฆผ์ด ๊ทธ๋ ค์ ธ์•ผํ•œ๋‹ค.

#๐Ÿ“‘Study Source

  • WeCode ๊ฐ•์˜ ์ค‘ ๊ด€ํฌ๋‹˜์˜ ์—ด์ • ๊ฐ•์˜ ์ค‘:}
profile
์ž๊ธฐ ์‹ ๋ขฐ์˜ ํž˜์„ ๋ฏฟ๊ณ  ์‹ค์ฒœํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ ์žํ•ฉ๋‹ˆ๋‹ค.

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

comment-user-thumbnail
2021๋…„ 8์›” 26์ผ

1๋“ฑ!! ์™€์šฐ ๋ฉ‹์ฐŒ์‹ญ๋‹ˆ๋‹ค. ๊นƒ ๋งˆ์Šคํ„ฐ๊ฐ€ ๋˜๊ฒ ์–ด์š”!

1๊ฐœ์˜ ๋‹ต๊ธ€