STUDY ๐Ÿ“š/Git

[Git] Github Flow

daxx0ne 2023. 3. 6. 11:41

GitFlow์™€ GithubFlow ๋น„๊ตํ•˜๊ธฐ

GitFlow

  • main ๋ธŒ๋žœ์น˜๊ฐ€ ์•„๋‹Œ ์ดˆ๊ธฐ ๋ธŒ๋žœ์น˜์—์„œ ๋ฐ”๋กœ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑ ํ›„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•จ
  • ์ž‘์—…์ด ์™„๋ฃŒ๋˜์–ด๋„ ๋ฐ”๋กœ main์œผ๋กœ ๋ณ‘ํ•ฉ x
    • main ๋ธŒ๋žœ์น˜์— ๋ฐ”๋กœ ์ปค๋ฐ‹ํ•˜๊ฒŒ ๋˜๋ฉด ์ž๋™ํ™”๋กœ ์ธํ•˜์—ฌ ๊ณ ๊ฐ์ด ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋จ (์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ)
  • master : ๋ผ์ด๋ธŒ ์„œ๋ฒ„์—์„œ ์ œํ’ˆ์œผ๋กœ ์ถœ์‹œ ๋˜๋Š” ๋ธŒ๋žœ์น˜
  • develop : ๋‹ค์Œ ๋ฒ„์ „ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ๋ชจ์•„๋‘๋Š” ๋ธŒ๋žœ์น˜
    • feature : ํ•œ ๊ฐœ์˜ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ๋ธŒ๋žœ์น˜ (develop ๋ธŒ๋žœ์น˜์— ์ƒ์„ฑ)
    • release : ์†Œํ”„ํŠธ์›จ์–ด ๋ฐฐํฌ๋ฅผ ์ค€๋น„ํ•˜๋Š” ๋ธŒ๋žœ์น˜ (develop ๋ธŒ๋žœ์น˜์— ์ƒ์„ฑ)
  • hot fixes : ์ด๋ฏธ ๋ฐฐํฌ๋œ ๋ฒ„์ „์—์„œ ๋ฐœ์ƒํ•œ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ธŒ๋žœ์น˜
    • ๋ธŒ๋žœ์น˜์—์„œ ์ˆ˜์ •ํ•œ ํ›„ develop์— ํ•ฉ์นจ
  • Git Flow์˜ ๋‹จ์  : ์ž‘์—… ์†๋„๊ฐ€ ์˜ค๋ž˜ ๊ฑธ๋ฆผ

 

GithubFlow

  • ๊ฐ„๋‹จํ•˜๊ณ  ๋ฐ”๋ฅธ ์†๋„๋กœ ์ž‘์—…์ด ๊ฐ€๋Šฅ
  • ์ž๋™ํ™”
  • ํ•˜๋‚˜์˜ ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…์ด ๋๋‚˜๋ฉด ๋ฐ”๋กœ main์— ๋ณ‘ํ•ฉ

Github Flow๋Š” 2๊ฐ€์ง€ ์•ˆ์ „์žฅ์น˜๋ฅผ ๊ฐ€์ง

 

  • Github Flow๋ฅผ ํ•  ๋•Œ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋ฅผ ์ „๋ถ€ ๋Œ๋ ค๋ณธ ํ›„ ํ•˜๋‚˜๋ผ๋„ ์•ˆ๋œ๋‹ค๋ฉด ๋ฐฐํฌ๋ฅผ ์ค‘๋‹จํ•จ
    • TDD ํ•„์ˆ˜!
  • ๋ณ‘ํ•ฉ์„ ํ•  ๋•Œ๋Š” ๋‘๋ช… ์ด์ƒ์˜ ๋™์˜๋ฅผ ๋ฐ›์•ผํ•˜๋Š” ๋ฃฐ์„ ๊ฑธ ์ˆ˜๋„ ์žˆ๋‹ค. ๋ณ‘ํ•ฉ์„ ํ•˜๋Š” ๋ฐ ์ž‘์—…์ž ํ˜ผ์ž ๊ฒฐ์ •ํ•˜์ง€ ์•Š์Œ
    • Git Flow ๋ณด๋‹ค ๋” ๋น ๋ฅธ ์ ์šฉ!

ํ˜‘์—… ํ•˜๊ธฐ

 

  • pm) ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ ์ƒ์„ฑ
    • readme.md ์ƒ์„ฑ ์ฒดํฌ
    • main ๋ธŒ๋žœ์น˜์— PR ๋ฃฐ ๊ฑธ๊ธฐ (์„ค์ • - Branches - Branch name pattern์— main - Require a pull request before merging ์„ ํƒ - ์ธ์› ์ˆ˜ ์„ค์ •
  • pm) ๊ฐœ๋ฐœ์ž 1์„ ํ˜‘๋ ฅ์ž๋กœ ์ดˆ๋Œ€
    • back) ๊ฐœ๋ฐœ์ž 1์€ ์ดˆ๋Œ€๋ฅผ ์ˆ˜๋ฝ
  • pm) ์ด์Šˆ ์ƒ์„ฑ
  • pm) ๋ผ๋ฒจ ์ง€์ •
    • bug - ๋ฒ„๊ทธํ”ฝ์Šค
    • document - ๋ฌธ์„œ ์ตœ์‹ ํ™”
    • enhancement - ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๋ฐ ๊ฐœ์„ 
  • back) ์ด์Šˆ ํ™•์ธ ๋ฐ ์–‘์ˆ˜
  • ๐Ÿ“ค back) git clone ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ์ฃผ์†Œ .  : git pull๊นŒ์ง€ ๋•ก๊ธฐ๋Š” ๋ช…๋ น์–ด (git init + git pull ์˜ ์••์ถ•)
    • git checkout -b enhancement/1 ํ•˜๊ณ  ๋‚˜์„œ ์ž‘์—…ํ•˜๊ธฐ
    • git add .
    • git commit -m “work1”
    • git pull origin main —rebase : git pull origin main —rebase : ํ˜„์žฌ ๋‚ด๊ฐ€ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š”๊ณณ์— ์›๊ฒฉ์ง€์˜ main์— ์žˆ๋Š” ์ตœ์‹  ์ž‘์—…๋ณธ์„ ๊ฐ€์ ธ์™€์„œ ๋ณ‘ํ•ฉํ•œ๋‹ค. (์ฆ‰ ์ตœ์‹ ํ™”)
    • git push origin enhancement/1
  • back) ๊นƒํ—ˆ๋ธŒ ์ ‘์† ํ›„ pr ์ƒ์„ฑ ๋ฌธ๊ตฌ ํ™•์ธ
  • pm) ์Šน์ธ : sqush merge (์ปค๋ฐ‹๊ฒฐ๊ณผ ๋ณด๊ธฐ ์ข‹๊ฒŒ ์Œ“๊ธฐ) -> delete branch : enhancement/1 -> ์ด์Šˆ ๋‹ซ๊ธฐ
    • ๊ฑฐ๋ถ€ : pr ๋ฆฌ์  (๋ณ‘ํ•ฉ ๊ฑฐ๋ถ€)
  • back) ๋ฆฌ์  ํ™•์ธ ๋ฐ ์ตœ์‹ ํ™” ํ›„ ๐Ÿ“ค ๊ณผ์ • ๋‹ค์‹œ ์ง„ํ–‰
  • back) pr ์Šน์ธ ๋ฐ›์œผ๋ฉด
    • git checkout main
    • git pull origin main
    • git branch -D enhancement/1
    • git fetch --prune : ๋กœ์ปฌ์— ๋‚จ์•„ ์žˆ๋Š” ๊ฒƒ๋“ค ์‚ญ์ œ

์ •๋ฆฌ

 

Git Flow ์—์„œ ๋ณต์žกํ•จ์„ ์ค„์ด๊ณ  Github์˜ ํˆฌํ‘œ ๊ธฐ๋Šฅ์„ ํ•ฉ์นœ ๊ฒƒ์ด Github Flow!