๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“™ Git

Git Flow ๋ž€ ๋ฌด์—‡์ผ๊นŒ?

by GroovyArea 2022. 5. 3.
Git์„ ์ด์šฉํ•˜์—ฌ ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋˜ ๋„์ค‘ git์— ๋Œ€ํ•œ ์‹ฌ์ธต์ ์ธ ๊ณต๋ถ€๋ฅผ ํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋ฌธ๋“ ๋“ค์—ˆ๋‹ค. ํ˜‘์—…์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์€ ๋ธŒ๋žœ์น˜์™€ git flow๊ฐ€ ์žˆ๋‹ค๊ณ ๋Š” ๋Œ€์ถฉ ๋“ค์—ˆ์ง€๋งŒ ์™„๋ฒฝํ•˜๊ณ  ์ดํ•ดํ•˜๊ณ  ์ด์šฉํ•˜๋Š” ๊ฒƒ๊ณผ๋Š” ์ฒœ์ฐจ๋งŒ๋ณ„์ด๋ผ์„œ git flow๋ฅผ ๊ณต๋ถ€ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์— ์ ์šฉ์‹œํ‚ฌ ๊ณ„ํš์ด๋‹ค.

 

๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜

feature -> develop -> release -> hotfix -> master 

 

-> ๋จธ์ง€ ์ˆœ์„œ๋Š” ์•ž์—์„œ ๋’ค๋กœ ์ง„ํ–‰

-> release์™€ hotfix ๋ธŒ๋žœ์น˜์˜ ๊ฒฝ์šฐ develop ์˜ค๋ฅธ์ชฝ์— ์œ„์น˜ํ•˜๋ฏ€๋กœ develop๋„ ๋จธ์ง€ ๊ฐ€๋Šฅ 

๋ธŒ๋žœ์นญ ๋ชจ๋ธ

=> ์ค‘์‹ฌ์ด ๋˜๋Š” ๋ธŒ๋žœ์น˜๋Š” master & develop! 

=> merge๋œ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋Š” ์‚ญ์ œ!

 

Feature ๋ธŒ๋žœ์น˜

  • ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ธŒ๋žœ์น˜
  • ๋‚˜์˜ค๋Š” ๊ณณ (Check out) : develop 
  • ๋“ค์–ด๊ฐ€๋Š” ๊ณณ (Merge) : develop
  • ์ด๋ฆ„ ์ง€์ • ๊ฐ€๋Šฅ

Release ๋ธŒ๋žœ์น˜

  • ์ƒˆ๋กœ์šด Production์„ release ํ•˜๋Š” ๋ธŒ๋žœ์น˜
  • ๋‚˜์˜ค๋Š” ๊ณณ (Check out) : develop 
  • ๋“ค์–ด๊ฐ€๋Š” ๊ณณ (Merge) : develop, master
  • ์ด๋ฆ„ ์ง€์ • ๊ฐ€๋Šฅ

Hotfix ๋ธŒ๋žœ์น˜

  • Production์—์„œ ๋ฐœ์ƒํ•œ ๋ฒ„๊ทธ๋ฅผ ๋”ฐ๋‚ด๊ณ  ์ˆ˜์ •ํ•˜๋Š” ๋ธŒ๋žœ์น˜
  • ๋‚˜์˜ค๋Š” ๊ณณ (Check out) : master
  • ๋“ค์–ด๊ฐ€๋Š” ๊ณณ (Merge) : develop, master

 

Git Flow ์ข…๋ฅ˜

 

GitHub Flow

  • ํ๋ฆ„๊ณผ ๋ฃฐ์ด ๋‹จ์ˆœํ•จ.
  • ์ž๋™ํ™”์˜ ๊ฐœ๋… ๋‚ด์žฅ
  • master ๋ธŒ๋žœ์น˜๋Š” ์–ธ์ œ๋“ ์ง€ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•จ (ํ•ญ์ƒ ์ตœ์‹  ์•ˆ์ •๋œ ์ƒํƒœ ์œ ์ง€ => ์—„๊ฒฉ ๊ด€๋ฆฌ)
  1. master์—์„œ ๋ธŒ๋žœ์น˜ ๋”ฐ๊ธฐ
  2. ์›๊ฒฉ ๋ธŒ๋žœ์น˜๋กœ ์ˆ˜์‹œ๋กœ push
  3. ํ”ผ๋“œ๋ฐฑ ๋„์›€ ์š”์ฒญ, merge ์ค€๋น„ ์™„๋ฃŒ ์‹œ pull request ์ƒ์„ฑ
  4. ๋ฆฌ๋ทฐ์™€ ์‚ฌ์ธ์ด ๋๋‚œ ํ›„ master๋กœ merge
  5. merge๋œ ๊ฒฝ์šฐ ์ฆ‰์‹œ ๋ฐฐํฌ

์žฅ์ 

> ๋ธŒ๋žœ์น˜ ์ „๋žต ๋‹จ์ˆœ

> ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๊ฐ€๋Šฅ

> CI๊ฐ€ ํ•„์ˆ˜์ , ๋ฐฐํฌ ์ž๋™ ์ง„ํ–‰ ๊ฐ€๋Šฅ

 

๋‹จ์ 

> CI์™€ ๋ฐฐํฌ ์ž๋™ํ™”๊ฐ€ ๋˜์–ด์žˆ์ง€ ์•Š์„ ๊ฒฝ์šฐ ์‚ฌ๋žŒ์ด ๊ด€๋ จ๋œ ์—…๋ฌด๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค๋Š” ์ 

> pr์˜ ์–‘์ด ๋งŽ์•„์งˆ ๊ฒฝ์šฐ ๊ฐ๋‹นํ•˜๊ธฐ ์–ด๋ ต๋‹ค.

 

GitLab Flow

  • Github๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•œ flow
  • production ๋ธŒ๋žœ์น˜ ์กด์žฌ 
  • master์™€ production ์‚ฌ์ด pre-production ๋ธŒ๋žœ์น˜ ์กด์žฌ -> staging์„ ์œ„ํ•œ ๊ณต๊ฐ„
  • Github์™€ ๊ฑฐ์˜ ์œ ์‚ฌํ•˜๋‹ค.

 

๋‚ด๊ฐ€ ์‚ฌ์šฉํ•ด์•ผ ํ•  Git Flow?

๋‚˜๋Š” Github Flow๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค.

  • ํ•œ๋ฒˆ ๊ฒฝํ—˜ํ•ด ๋ณด์•˜์Œ (๊ฐœ์ธ ํ”„๋กœ์ ํŠธ ์ด๋ฏ€๋กœ ์ „๋žต์ด ๋‹จ์ˆœ)
  • ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๊ฐ€๋Šฅ

์ฐธ๊ณ  : ์ž˜ ๋ฐค์— ์“ธ๋ฐ์—†๋Š” ์ƒ๊ฐํ•˜๊ธฐ.../Git flow, GitHub flow, GitLab flow (ujuc.github.io)

๋ฐ˜์‘ํ˜•