[Git ํŠน๊ฐ•] 2. git & github์œผ๋กœ ํ˜‘์—…ํ•˜๋Š” ๋ฒ• (branch, switch, checkout, merge, stash, reset, revert, pull request)
๋ฐ˜์‘ํ˜•

 

 

 

 

 

1. ๋ธŒ๋žœ์น˜ ํ™œ์šฉํ•˜๊ธฐ

 

 

 

  • ๋ณดํ†ต ์ˆ˜์ •์€ ํ•˜๊ณ  ์‹ถ์€๋ฐ, ์›๋ž˜ ํŒŒ์ผ์€ ๊ทธ๋Œ€๋กœ ๋†”๋‘๊ณ  ์‹ถ์„ ๋•Œ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ฆ
    ๊ทธ๋Ÿฌ๋‚˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ ํ•˜๋‚˜ ํ•˜๋‚˜์˜ ํฌ๊ธฐ๊ฐ€ ์—„์ฒญ ์ปค์งˆ ์ˆ˜๋„ ์žˆ์–ด ํ˜„์‹ค์—์„œ ๋ณต์‚ฌํ•ด์„œ ์“ธ ์ˆ˜๊ฐ€ ์—†์Œ
  • ๋ณต์‚ฌ๋ณธ == ๋ธŒ๋žœ์น˜
  • ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์€ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ํ•„์ˆ˜

 

 

 

๋ธŒ๋žœ์น˜(๋ณต์‚ฌ๋ณธ) ์ƒ์„ฑ : git branch

 

 

git branch ๋ธŒ๋žœ์น˜์ด๋ฆ„
ex) git branch cart
  • 'git branch ๋ธŒ๋žœ์น˜์ด๋ฆ„' ์œผ๋กœ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑ

 

git branch
  • git branch๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ธŒ๋žœ์น˜ ํ™•์ธ ๊ฐ€๋Šฅ
  • ๋ณ„ํ‘œ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ์ƒ‰๊น”์ด ๋‹ค๋ฅด๋ฉด ๋‚ด๊ฐ€ ์œ„์น˜ํ•ด ์žˆ๋Š” ๋ธŒ๋žœ์น˜
  • ํฐ์ƒ‰์œผ๋กœ ๋–  ์žˆ์œผ๋ฉด ๋‚ด๊ฐ€ ๋งŒ๋“  ๋ธŒ๋žœ์น˜
  • ํ˜น์‹œ END๋กœ ๋– ์„œ ์•„๋ฌด๊ฒƒ๋„ ์ž…๋ ฅ ์•ˆ ๋˜๋ฉด ํ‚ค๋ณด๋“œ Q ๋ˆ„๋ฅด๋ฉด ๋จ

 

 

 

ํ˜„์žฌ ์žˆ๋Š” ๋ธŒ๋žœ์น˜ ์ด๋™ : git switch ํ˜น์€ git checkout

 

git switch <๋ธŒ๋žœ์น˜๋ช…>
ex) git switch login

ํ˜น์€

git checkout <๋ธŒ๋žœ์น˜๋ช…>
ex) git checkout login

 

  • ์œ„์˜ ๋ช…๋ น์–ด๋กœ ์ด๋™ ํ›„, git branch๋กœ ํ™•์ธํ•ด๋ณด๋ฉด ์ง€๊ธˆ ์žˆ๋Š” ๋ธŒ๋žœ์น˜ ํ‘œ์‹œ๊ฐ€ ๋ฐ”๋€ ๊ฑธ ํ™•์ธ ๊ฐ€๋Šฅ
  • ์›๋ž˜๋Š” git checkout๋ผ๋Š” ๋ช…๋ น์–ด๋งŒ ์žˆ์—ˆ์œผ๋‚˜, checkout์€ ๊ธฐ๋Šฅ์ด ์—ฌ๋Ÿฌ๊ฐ€์ง€๋ผ ํ—ท๊ฐˆ๋ ค์„œ
    ๋ธŒ๋žœ์น˜ ์ด๋™๋งŒ์„ ์œ„ํ•œ git switch๋ผ๋Š” ๋ช…๋ น์–ด๊ฐ€ ์ตœ๊ทผ์— ์ƒˆ๋กœ ์ƒ๊น€
  • ์˜›๋‚  ํšŒ์‚ฌ์—์„œ๋Š” ์•„์ง๋„ git checkout ์“ฐ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Œ. ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ ์“ฐ๋ฉด ๋จ

 

 

 

๋ธŒ๋žœ์น˜ ํ•œ ๋ฒˆ์— ์ƒ์„ฑ & ์ด๋™ : git switch -c ํ˜น์€ git checkout -b

git switch -c ๋ธŒ๋žœ์น˜ ์ด๋ฆ„

ํ˜น์€

git checkout -b ๋ธŒ๋žœ์น˜ ์ด๋ฆ„
  • ๋ณดํ†ต์€ ์ผํ•˜๋‹ค๋ณด๋ฉด ์ƒ์„ฑ(branch)/์ด๋™(switch) ๋”ฐ๋กœํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์ด๊ฒƒ๋งŒ ์”€
  • switch -c๋Š” create์˜ ์•ฝ์ž
  • checkout -b๋Š” branch์˜ ์•ฝ์ž

 

 

 

์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜์—์„œ ์ฝ”๋“œ ์ˆ˜์ •

  1. git switch ๋ธŒ๋žœ์น˜๋ช…์œผ๋กœ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋กœ ์ด๋™
  2. git add .
  3. git commit -m "์ €์žฅ๋ฉ”์‹œ์ง€"
  4. git switch ๋กœ ๊ธฐ์กด์˜ main ๋ธŒ๋žœ์น˜๋กœ ๋‹ค์‹œ ์ด๋™ํ•˜๋ฉด ์ˆ˜์ •ํ•œ ์ฝ”๋“œ๊ฐ€ ๋ณด์ด์ง€ ์•Š์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Œ
    -> ์›๋ณธ์€ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ , ์ƒˆ๋กœ ๋งŒ๋“  ๋ธŒ๋žœ์น˜์—์„œ๋งŒ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•œ ๊ฒƒ (๋ณต์‚ฌ๋ณธ ์ˆ˜์ •)

 

 

 

์ฝ”๋“œ ์ง  ๋ธŒ๋žœ์น˜๋ฅผ main์— ํ•ฉ์น˜๊ธฐ : git merge

git switch ์ตœ์ข…๋ธŒ๋žœ์น˜์ด๋ฆ„(main) // 1. ์›๋ณธ ๋ธŒ๋žœ์น˜๋กœ ์ด๋™
git merge ํ•ฉ์น ์žฌ๋ฃŒ๋ธŒ๋žœ์น˜์ด๋ฆ„(login) // 2. ํ•ฉ์น  ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜๋ฅผ ์ž…๋ ฅ
  • ์•ˆ์ „ํ•˜๊ฒŒ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์—์„œ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜์˜€์œผ๋‹ˆ, ์›๋ณธ ์ฝ”๋“œ๋กœ ํ•ฉ์ณ์•ผ ํ•จ (ํ˜‘์—… ๊ด€์ )
  • main ๋ธŒ๋žœ์น˜๋กœ ๋จผ์ € ์ด๋™ํ•œ ํ›„, ํ•ฉ์น  ๊ธฐ๋Šฅ๋ธŒ๋žœ์น˜๋ฅผ ๋•ก๊ฒจ ์˜ด

 

 

 

์ฝ”๋“œ ์ž„์‹œ์ €์žฅ : git stash

git stash -u -m "์–ด๋–ค ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์ค‘์ด์—ˆ๋Š”์ง€ ๊ฐ„๋‹จํ•œ ๋ฉ”์‹œ์ง€"
  • ์ฝ”๋“œ ๋ณ€๊ฒฝ ํ›„ ์ €์žฅ(add, commit)์„ ํ•˜์ง€ ์•Š์œผ๋ฉด git switch๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๋•Œ๊ฐ€ ์žˆ์Œ
    (์ด๋™ํ•˜๋Š” ๋ธŒ๋žœ์น˜์˜ ์ฝ”๋“œ์™€ ๋‚ด๊ฐ€ ๋ณ€๊ฒฝํ•œ ์ฝ”๋“œ์—์„œ ๊ฒน์น˜๋Š” ๋ถ€๋ถ„์ด ์žˆ์„ ๋•Œ ์ด๋™์ด ์•ˆ ๋จ)
  • ์ด๋Ÿฐ ๊ฒฝ์šฐ ์ €์žฅ(add, commit)์„ ํ•ด์ฃผ์–ด์•ผ ํ•ด๊ฒฐ๋˜์ง€๋งŒ,
    ๊ธ‰ํ•˜๊ฒŒ ๋ธŒ๋žœ์น˜๋ฅผ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ๊ฐœ๋ฐœ์ด ๋œ ๋œ ์ƒํ™ฉ์ด๋ผ ์ €์žฅํ•˜๊ธฐ ์‹ซ์„ ๋•Œ๊ฐ€ ์žˆ์Œ
  • ์ด๋Ÿฐ ๊ฒฝ์šฐ git stash๋กœ ์ž„์‹œ ์ €์žฅํ•˜๊ณ  switch๋กœ ๋ธŒ๋žœ์น˜ ์ด๋™ ๊ฐ€๋Šฅ
  • -u๋Š” untracked ํŒŒ์ผ๋“ค์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ๋„ ๋ชจ๋‘ ์ €์žฅํ•˜๊ฒ ๋‹ค๋Š” ๋œป (untracked ํŒŒ์ผ์˜ ์˜ˆ์‹œ: ์ƒˆ๋กœ ๋งŒ๋“  ํŒŒ์ผ)
  • -m ์€ ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€์ฒ˜๋Ÿผ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๋Š” ์ค‘์ด์—ˆ๋Š”์ง€ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฉ”์„ธ์ง€๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์˜ต์…˜

 

git stash list
  • git stash list ๋ช…๋ น์–ด๋กœ ์ž„์‹œ๋กœ ์ €์žฅ๋œ ๋ถ€๋ถ„ ํ™•์ธ ๊ฐ€๋Šฅ
  • q๋กœ ๋น ์ ธ๋‚˜์˜ด

 

git stash apply stash@{์ˆซ์ž} // ์ˆซ์ž ๋ถ€๋ถ„์€ git stash list ๋ช…๋ น์–ด๋กœ ํ™•์ธ
  • ์ž ์‹œ ์ €์žฅํ–ˆ๋˜ ๊ฒƒ์„ ๋˜๋Œ๋ฆฌ๊ณ  ์‹ถ์„ ๋•Œ ์ž…๋ ฅ

 

 

 

๊ณผ๊ฑฐ์˜ ์ปค๋ฐ‹์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ : git reset ํ˜น์€ git revert

  • ํ˜‘์—… ์‹œ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์–ด์ฉ” ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด ์•„๋‹ˆ๋ผ๋ฉด ์‚ฌ์šฉ ๋น„์ถ” (๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ์ปค๋ฐ‹ ๋‚ด์—ญ ๋ณ€๊ฒฝ, ์ฝ”๋“œ ๊ผฌ์ž„)
  • ํ˜„์—…์—์„œ ์“ธ ์ผ์€ ๊ฑฐ์˜ ์—†์Œ
git reset --์˜ต์…˜ ์ปค๋ฐ‹id

git reset --hard 5dc14b
  • ๊ณผ๊ฑฐ์˜ ์ปค๋ฐ‹์œผ๋กœ ์™„์ „ํžˆ ๋˜๋Œ์•„๊ฐ€๋Š” git reset
  • ๊ณผ๊ฑฐ ์ปค๋ฐ‹์ด ๋ชจ๋‘ ์‚ฌ๋ผ์ง€๊ณ  ํŒŒ์ผ๋„ ๊ณผ๊ฑฐ ๋ฒ„์ „์œผ๋กœ ๋˜๋Œ์•„ ๊ฐ
  • ์˜ต์…˜ ์ข…๋ฅ˜: --hard, --mixed, --soft
  • ๊ณ ์œ  ์•„์ด๋””: git log ๋ช…๋ น์–ด๋กœ ํ™•์ธํ•œ ์ปค๋ฐ‹ ์•„์ด๋””์˜ ๋ฌธ์ž์—ด 5~6๊ฐœ

 

git revert ์ปค๋ฐ‹id
  • ๊ณผ๊ฑฐ ์ปค๋ฐ‹์„ ๋‹ค์Œ ์ปค๋ฐ‹์œผ๋กœ ๋งŒ๋“ค์–ด ๋˜๋Œ์•„๊ฐ€๋Š” git revert
  • git reset์ฒ˜๋Ÿผ ์™„์ „ํžˆ ์ปค๋ฐ‹์ด ์‚ฌ๋ผ์ง€๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋‚˜๋งˆ ์•ˆ์ „
  • git revert ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ถฉ๋Œ(conflict)๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ, ๊ธฐ์กด๊ณผ ๊ฒน์น˜๋Š” ๋ถ€๋ถ„์—์„œ ๋ณ€๊ฒฝ์ด ์žˆ์œผ๋‹ˆ ๊ฒฐ์ •ํ•˜๋ผ๋Š” ๊ฒƒ
  • ์ถฉ๋Œ ์‹œ git add . ์™€ git commit -m "์ปค๋ฐ‹๋ฉ”์‹œ์ง€" ์ž…๋ ฅ์œผ๋กœ ๋๋ƒ„
  • ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ž…๋ ฅํ•˜๊ณ  ๋๋ƒ„

 

git revert

 

 

 

vim

  • ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ
  • git commit ์‹œ -m ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด vim ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ๊ฐ€ ์—ด๋ฆผ
  • ๊นƒํ—ˆ๋ธŒ์—์„œ conflict ํ˜น์€ git pull ์‹œ ๋งŒ๋‚  ์ˆ˜ ์žˆ์Œ
  • vim์ด ๋–ด์„ ๋•Œ ํ‚ค๋ณด๋“œ i๋ฅผ ๋ˆ„๋ฅด๋ฉด ---INSERT--- ํ‘œ์‹œ๊ฐ€ ๋‚˜์˜ค๊ณ  ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ž‘์„ฑ ๊ฐ€๋Šฅ
  • ๋ฉ”์‹œ์ง€ ์ž‘์„ฑ์ด ๋๋‚˜๋ฉด ํ‚ค๋ณด๋“œ ESC
  • : + w + q ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ž…๋ ฅ ํ›„ ์—”ํ„ฐ ์น˜๋ฉด ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ €์žฅ ์™„๋ฃŒ

 

๋”๋ณด๊ธฐ

 

 

โš ๏ธ hint: waiting for your editor to close the file*. ์—๋Ÿฌ ๋ฐœ์ƒ์‹œ / ํ˜น์€ vim์ด ์•„๋‹ˆ๊ณ  ๋‹ค๋ฅธ ๊ฒƒ์ด ๋œฐ ์‹œ

  • git config --global core.editor "vim"

 

โš ๏ธ LF will be replaced by CRLF the next time Git touches it ๋ผ๋Š” ๊ฒฝ๊ณ ๋ฌธ์ด ๋œฐ ์‹œ

  • (win) git config --global core.autocrlf true
  • (mac) git config --global core.autocrlf input

 

 

 

 


 

2. Pull Request ํ™œ์šฉํ•˜๊ธฐ

 

  • ์‚ฌ์‹ค ํ˜‘์—… ์‹œ git merge ๋ช…๋ น์–ด๋กœ ํ•ฉ์น˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†์Œ
  • ํ„ฐ๋ฏธ๋„์ด ์•„๋‹Œ github์—์„œ ํ•ฉ์น˜์ž
  • ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์˜จ๋ผ์ธ์—์„œ ๋ฐ›๊ณ , ์˜จ๋ผ์ธ์—์„œ ํ•ฉ์น˜๋Š”๊ฒŒ ์ถฉ๋Œ ์—ฌ๋ถ€ ํ™•์ธ, ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ๋“ฑ ์ ๊ฒ€์— ํŽธํ•˜๊ธฐ ๋•Œ๋ฌธ
  • github์—์„œ๋„ merge์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ: Pull Request
  • ๋‹น๊ฒจ์™€ ํ•ฉ์น˜๋Š” ๊ฒƒ(Pull)์„ ์š”์ฒญ(Request)ํ•œ๋‹ค ๋ผ๋Š” ๋œป

 

1. ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ๋ฐ ๋ธŒ๋žœ์น˜ ์ด๋™

git switch -c ๋ธŒ๋žœ์น˜๋ช…

ํ˜น์€

git checkout -b ๋ธŒ๋žœ์น˜๋ช…

 

2. ์ฝ”๋“œ ์ž‘์„ฑ

 

3. ์ฝ”๋“œ ๋ณ€๊ฒฝ ์ €์žฅ

git add .
git commit -m "update: ๋กœ๊ทธ์•„์›ƒ ๊ธฐ๋Šฅ ์ƒ์„ฑ"

 

4. github์— ์ฝ”๋“œ ์—…๋กœ๋“œ

git push origin ๋ธŒ๋žœ์น˜๋ช…
ex) git push origin logout

 

5. github ํ™ˆํŽ˜์ด์ง€์—์„œ Compare & pull request ๋ฒ„ํŠผ ํด๋ฆญ

6. base: ์ตœ์ข…(๊ธฐ๋ณธ)๋ธŒ๋žœ์น˜ / compare: ์žฌ๋ฃŒ(๊ธฐ๋Šฅ)๋ธŒ๋žœ์น˜ ์„ค์ •ํ•˜๊ณ 
Pull request ๋ฉ”์‹œ์ง€ ์ž‘์„ฑ ํ›„ Create pull request ํด๋ฆญํ•ด์„œ ์ƒ์„ฑ

7. Files changed์—์„œ ์ฝ”๋“œ ๋ณ€๊ฒฝ์  ํ™•์ธ, ์—ฌ๊ธฐ์„œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๊ฐ€๋Šฅ

8. Merge pull request ๋ฒ„ํŠผ ๋ˆ„๋ฅด๊ณ  Confirm merge ํ•˜๋ฉด ํ•ฉ์ณ์ง

9. ๋กœ์ปฌ์—๋„ ๋ฐ˜์˜: git checkout ๋ธŒ๋žœ์น˜๋ช…์œผ๋กœ ์ด๋™, git pull origin ๋ธŒ๋žœ์น˜๋ช…์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ

 

 

 


 

3. ํ˜‘์—… ์‹œ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ 

 

 

๋ฌธ์ œ์ 1 : ์™„๋ฒฝํ•˜๊ฒŒ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœํ•ด์•ผ merge ๊ฐ€๋Šฅ

  • ์‚ฌ์šฉ์žํ•œํ…Œ ๊ณต๊ฐœํ•  ์ •๋„๋กœ ๋งŒ๋“ค์–ด์•ผ ๋ฉ”์ธ ๋ธŒ๋žœ์น˜์— ๋„ฃ๋Š”๊ฑด๋ฐ, ๊ธฐ๋Šฅ์„ ๋‹ค ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆผ
  • ์ „์ฒด์ ์œผ๋กœ ๋ณด๋‹ˆ ๋ฒ„๊ทธ๊ฐ€ ์–ด๋””์„œ ๋‚œ ๊ฑด์ง€ ์ฐพ๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ์„œ ๋ฒ„๊ทธ ์ˆ˜์ • ์˜ค๋ž˜ ๊ฑธ๋ฆผ
  • ํ•ด๊ฒฐ์ฑ…: ๊ฐœ๋ฐœ์šฉ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ (dev ํ˜น์€ develop)
    1. Main ๋ธŒ๋žœ์น˜(๋ฐฐํฌ์šฉ)
    2. Develop ๋ธŒ๋žœ์น˜(ํ…Œ์ŠคํŠธ์šฉ)
    3. ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜(๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์šฉ)
    ํ•ฉ์น˜๋Š” ๊ฒƒ์„ Develop ๋ธŒ๋žœ์น˜๋กœ!

 

๋ฌธ์ œ์ 2) Main ๋ธŒ๋žœ์น˜(๋ฐฐํฌ์šฉ ๋ธŒ๋žœ์น˜)์— ๊ทธ๋ƒฅ ํ•ฉ์น˜๋ฉด ์œ„ํ—˜ํ•จ

  • 5๋ฒˆ์งธ ์ค„ ์ฝ”๋“œ๊ฐ€ val name = "์ƒํ’ˆ๋ช…" ์ธ ์ฝ”๋“œ์™€ 3๋ฒˆ์งธ ์ค„ ์ฝ”๋“œ๊ฐ€ val name = "ํšŒ์›๋ช…"์ธ ์ฝ”๋“œ๊ฐ€ ํ•ฉ์ณ์ง„๋‹ค๋ฉด?
  • ๊นƒ์—์„œ๋Š” ์ธ์ง€ํ•˜์ง€ ๋ชปํ•ด์„œ ๊ทธ๋ƒฅ ํ•ฉ์ณ์ง€์ง€๋งŒ ์—๋Ÿฌ๊ฐ€ ์ƒ๊ธฐ๊ณ , ๋ชจ๋‘ ๋‹ค ๊ฐ™์ด ์—๋Ÿฌ๋ฅผ ๊ฐ€์ ธ๊ฐ€๊ฒŒ ๋จ
  • ํ•ด๊ฒฐ์ฑ…: ๋กœ์ปฌ์—์„œ ๋จผ์ € ํ…Œ์ŠคํŠธ
    ๋‚ด ์ปดํ“จํ„ฐ(๋กœ์ปฌ)์—์„œ git pull origin dev ๋กœ ๋ถˆ๋Ÿฌ์™€ ๋จผ์ € ํ•ฉ์ณ๋ณด๊ธฐ
    ์ถฉ๋Œ ์‹œ ํ•ด๊ฒฐ๋ฒ• ํŒŒ์•… ์šฉ์ด

 

 


 

4. ํ˜‘์—… ์‹ค์ „ ๊ฐ€์ด๋“œ

 

 

1. ์ดˆ๊ธฐ ์„ธํŒ…

1. ํŒ€์žฅ: ์ดˆ๊ธฐ ์ฝ”๋“œ ์ž‘์„ฑ ๋ฐ github ์—…๋กœ๋“œ

  1. ํด๋” ์ƒ์„ฑ
  2. ์งง์€ ์ดˆ๊ธฐ ์ฝ”๋“œ ์ž‘์„ฑ
  3. git init, add, commit
  4. Github ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ƒ์„ฑ
  5. Github ์—…๋กœ๋“œ (git push)

2. ํŒ€์žฅ : dev(ํ˜น์€ develop) ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ

  1. git switch -c dev (๋กœ์ปฌ์—์„œ dev ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ)
  2. git push origin dev (github์—๋„ ๋ฐ˜์˜)

3. Github์—์„œ dev ๋ธŒ๋žœ์น˜๋ฅผ default๋กœ ์„ค์ •

  • Settings - Default branch - dev ๋ˆ„๋ฅด๊ณ  Update ํด๋ฆญ

4. ํŒ€์›๋“ค์„ Collaborator๋กœ ๋“ฑ๋ก

5. ํŒ€์›: git clone ํ•˜๊ธฐ (git clone ์ฃผ์†Œ .)

 

 

 

2. ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์‹œ์ž‘

1. ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ๋ฐ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ

  1. ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ (git switch -c ๊ธฐ๋Šฅ๋ธŒ๋žœ์น˜๋ช…)
  2. ์ฝ”๋“œ ์ž‘์„ฑ
  3. ์ฝ”๋“œ ์—…๋กœ๋“œ (git add . / git commit -m "" / git push origin ๊ธฐ๋Šฅ๋ธŒ๋žœ์น˜๋ช…)

2. pull request ์ƒ์„ฑ

3. ์ฝ”๋“œ ์ž‘์„ฑ์ž: ๋ฆฌ๋ทฐ ์š”์ฒญํ•˜๊ธฐ (Reviewers)

4. ์ฝ”๋“œ ๋ฆฌ๋ทฐ์–ด: ๋ฆฌ๋ทฐํ•˜๊ธฐ

  1. +๋ฅผ ๋ˆŒ๋Ÿฌ ์ž‘์„ฑ, Finish๋กœ ์™„๋ฃŒ
  2. Comment๋Š” ์˜๊ฒฌ
    Approve ์Šน์ธ
    Request changes ๊ฑฐ์ ˆ

5. ํ•ฉ์น˜๊ธฐ ์ „ ๋‚ด ๋กœ์ปฌ์—์„œ ์ถฉ๋Œ ํ•ด๊ฒฐ ๋ฐ ํ…Œ์ŠคํŠธ

  • ๋‚ด ๋กœ์ปฌ ์† ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜์—์„œ git pull origin dev
  • fatal: Need to specify how to reconcile divergent branches. ์—๋Ÿฌ๊ฐ€ ๋œฌ๋‹ค๋ฉด
    git config pull.rebase false ์ž…๋ ฅ ํ›„ ๋‹ค์‹œ ์ž…๋ ฅ

6. merge

  1. ์ˆ˜์ •์‚ฌํ•ญ์ด ์žˆ๋Š” ๊ฒฝ์šฐ add, commit, push
  2. Github์—์„œ merge ๋ฒ„ํŠผ ํด๋ฆญ

 

 

 

3. ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ

1. ๋‚ด ๋กœ์ปฌ์˜ dev์—๋„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ฐ˜์˜

  1. dev ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ (git switch dev)
  2. git pull origin dev

2. ๋‹ค์Œ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ

  1. ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ๋ฐ ์ฝ”๋“œ ์ž‘์„ฑ
  2. Git add, commit, push
  3. Pull request ์ƒ์„ฑ ๋ฐ ์ฝ”๋“œ ๋ฆฌ๋ทฐ
  4. ๋‚ด ๋กœ์ปฌ์—์„œ ์ถฉ๋Œ ํ•ด๊ฒฐ ๋ฐ ํ…Œ์ŠคํŠธ
  5. ์ฝ”๋“œ ์—…๋กœ๋“œ ๋ฐ merge
  6. ๋ฌดํ•œ ๋ฐ˜๋ณต

 


 

git flow (์ถœ์ฒ˜: ์šฐ์•„ํ•œํ˜•์ œ๋“ค / https://techblog.woowahan.com/2553 )

 

  • main(master): ์ œํ’ˆ์œผ๋กœ ์ถœ์‹œ๋  ์ˆ˜ ์žˆ๋Š” ๋ธŒ๋žœ์น˜
  • develop : ๋‹ค์Œ ์ถœ์‹œ ๋ฒ„์ „์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ธŒ๋žœ์น˜
  • feature : ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ธŒ๋žœ์น˜
  • release : ์ด๋ฒˆ ์ถœ์‹œ ๋ฒ„์ „์„ ์ค€๋น„ํ•˜๋Š” ๋ธŒ๋žœ์น˜
  • hotfix : ์ถœ์‹œ ๋ฒ„์ „์—์„œ ๋ฐœ์ƒํ•œ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ • ํ•˜๋Š” ๋ธŒ๋žœ์น˜

 

๋ฐ˜์‘ํ˜•
 ๐Ÿ’ฌ C O M M E N T