[Git] ๐Ÿ“š ๊นƒ ๋ธŒ๋žœ์น˜ ์ „๋žต(Github Flow / Git Flow)

CodeByHanยท2025๋…„ 4์›” 27์ผ
0

๊นƒํ—ˆ๋ธŒ

๋ชฉ๋ก ๋ณด๊ธฐ
5/6

์ด๋ฒˆ์— ํŒ€ํ”Œ์„ ํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ ๊นƒ,๊นƒํ—ˆ๋ธŒ ์‚ฌ์šฉ๋ฒ•์ด ํ—ท๊ฐˆ๋ ค์„œ ์ด๋ฒˆ์— ์ •๋ฆฌ ํ•ด๋ณผ๋ ค๊ณ  ํ•œ๋‹ค.

๊นƒ(Git) ๋ธŒ๋žœ์น˜ ์ „๋žต

์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•˜๋‚˜์˜ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ ์ €์žฅ์†Œ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•œ work-flow

๐Ÿ“Œ Git-Flow ์ „๋žต

๊ธฐ๋ณธ์ ์œผ๋กœ 5๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜๋œ๋‹ค.

  • feature
  • develop
  • release
  • hotfixes
  • master

5๊ฐ€์ง€ ์ค‘, ํ•ญ์‹œ ์œ ์ง€๋˜๋Š” ๋ฉ”์ธ ๋ธŒ๋žœ์น˜ master, develop 2๊ฐ€์ง€์™€ merge๊ฐ€ ๋˜๋ฉด ์‚ฌ๋ผ์ง€๋Š” ๋ณด์กฐ ๋ธŒ๋žœ์น˜ release, hotfixes,feature๊ฐ€ ์กด์žฌํ•œ๋‹ค.

๐Ÿค” ์ฃผ๋กœ ์ž‘์€ ํ”„๋กœ์ ํŠธ๋Š” feature์—์„œ ์ž‘์—…์„ ํ•˜๊ณ  -> develop์— PR์„ ๋‚ ๋ฆฌ๊ณ  master ๋ธŒ๋žœ์น˜๋กœ ํ•ฉ์น˜๋Š” ๋ฐฉ์‹์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.(์ œ ๊ฐœ์ธ์ ์ธ ์ƒ๊ฐ์ด๋‹ˆ ํ‹€๋ฆฐ ๋ถ€๋ถ„์ด ์žˆ์œผ๋ฉด ๋ง์”€ํ•ด์ฃผ์„ธ์š”....)

Git-Flow Branch

  • master : ๋ผ์ด๋ธŒ ์„œ๋ฒ„์— ์ œํ’ˆ์œผ๋กœ ์ถœ์‹œ๋˜๋Š” ๋ธŒ๋žœ์น˜
  • develop: ๋‹ค์Œ ์ถœ์‹œ ๋ฒ„์ „์„ ๋Œ€๋น„ํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๋Š” ๋ธŒ๋žœ์น˜
  • feature: ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜, develop ๋ธŒ๋žœ์น˜์— ๋“ค์–ด๊ฐ„๋‹ค.(์ž‘์—… ์™„๋ฃŒ ์‹œ develop์— PR)
  • release: ๋‹ค์Œ ๋ฒ„์ „์ถœ์‹œ๋ฅผ ์ค€๋น„ํ•˜๋Š” ๋ธŒ๋žœ์น˜, develop ๋ธŒ๋žœ์น˜๋ฅผ release ๋ธŒ๋žœ์น˜๋กœ ์˜ฎ๊ธด ํ›„ QA,ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  master๋ธŒ๋žœ์น˜๋กœ ํ•ฉ์นœ๋‹ค.(๋ฆด๋ฆฌ์ฆˆ ์™„๋ฃŒ ํ›„ develop์—๋„ ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋™๊ธฐํ™”)
  • hotfix: master ๋ธŒ๋žœ์น˜์—์„œ ๋ฐœ์ƒํ•œ ๋ฒ„๊ทธ ์ˆ˜์ •ํ•˜๋Š” ๋ธŒ๋žœ์น˜

๋ฉ”์ธ ๋ธŒ๋žœ์น˜

master ๋ธŒ๋žœ์น˜์™€ develop ๋ธŒ๋žœ์น˜ ๋‘ ์ข…๋ฅ˜๋ฅผ ๋งํ•œ๋‹ค. ์š”์ฆ˜์—๋Š” ์ธ์ข…์ฐจ๋ณ„(?) ๋ฌธ์ œ๋กœ master ๋ธŒ๋žœ์น˜๊ฐ€ ์•„๋‹ˆ๋ผ main ๋ธŒ๋žœ์น˜๋ผ๊ณ  ๋ถ€๋ฅด๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€ ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ๋‹ค.

  • master ๋ธŒ๋žœ์น˜๋Š” ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋งŒ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ธŒ๋žœ์น˜
  • develop ๋ธŒ๋žœ์น˜๋Š” ๋‹ค์Œ์— ๋ฐฐํฌํ•  ๊ฒƒ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ธŒ๋žœ์น˜

๋ณด์กฐ ๋ธŒ๋žœ์น˜

  • feature ๋ธŒ๋žœ์น˜
  • develop์—์„œ ๋ป—์–ด๋‚˜์˜ค๊ณ  ํ•ฉ์ณ์ง€๋Š” ๋ธŒ๋žœ์น˜๋กœ ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋ฅผ ํ•  ๋•Œ ์‚ฌ์šฉ
  • ๊ธฐ๋Šฅ์„ ๋‹ค ์™„์„ฑํ•  ๋•Œ๊นŒ์ง€ ์œ ์ง€, ๋‹ค ์™„์„ฑ๋˜๋ฉด develop ๋ธŒ๋žœ์น˜๋กœ merge ํ•˜๊ณ  ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ• ์ง€ ํŒ๋‹จํ•œ๋‹ค.

๋ฆด๋ฆฌ์ฆˆ ๋ธŒ๋žœ์น˜

๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์ตœ์ข…์ ์ธ ๋ฒ„๊ทธ ์ˆ˜์ •๋“ฑ์˜ ๊ฐœ๋ฐœ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ธŒ๋žœ์น˜

ํ•ซํ”ฝ์Šค ๋ธŒ๋žœ์น˜(hotfix)

๋ฐฐํฌํ•œ ๋ฒ„์ „์—์„œ ๊ธด๊ธ‰ํ•œ ์ˆ˜์ •์ด ํ•„์š”ํ•  ๋•Œ, master ๋ธŒ๋žœ์น˜์—์„œ ๋ถ„๋ฆฌํ•˜๋Š” ๋ธŒ๋žœ์น˜

  • hotfix ๋ธŒ๋žœ์น˜์—์„œ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ develop ๋ธŒ๋žœ์น˜์—์„œ๋„ merge ํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๋ถ€๋ถ„์„ ์ฒ˜๋ฆฌํ•ด์•ผํ•œ๋‹ค.
  • ๋ณดํ†ต ๋ฒ„๊ทธ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด ์ œ๊ฑฐํ•˜๋Š” ์ผํšŒ์„ฑ ๊ฐ€์ง€

๐Ÿ˜ญ ํŒ€ํ”Œ์„ ํ•˜๋‹ค๊ฐ€ ํŒ€์› ๋ถ„์ด ๋จธ์ง€๋ฅผ ํ•˜๋‹ค๊ฐ€ ๋‚ด ์ฝ”๋“œ๊ฐ€ ์‚ฌ๋ผ์ ธ์„œ hotfix ๋กœ ๊ณ ์ณ์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ์—ˆ๋Š”๋ฐ ๋น ๋ฅด๊ฒŒ ํ•ด์•ผํ•ด์„œ ๋‹นํ™ฉํ•ด์„œ hotfix ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑ์•ˆํ•˜๊ณ  dev ๋ธŒ๋žœ์น˜์—์„œ ๊ณ ์ณ์„œ ๊ทธ๋ƒฅ push ํ–ˆ์—ˆ๋‹ค... ์ด๊ฑด ์ง„์งœ ๋ฐ˜์„ฑ์„ ํ•ด์•ผ๊ฒ ๋‹ค.

Git flow ํ๋ฆ„

  • master ๋ธŒ๋žœ์น˜์™€ develop ๋ธŒ๋žœ์น˜๋Š” ๋‘˜ ๋ชจ๋‘ ์šด์šฉ์„ ํ•ด์•ผํ•œ๋‹ค.
  • ๋‚˜๋จธ์ง€ feature, release, hotfix ๋ธŒ๋žœ์น˜๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์ง€์šฐ๋”๋ผ๋„ ํฌ๊ฒŒ ์ƒ๊ด€์ด ์—†๋‹ค.
  • ๋Œ€๋ถ€๋ถ„์˜ ์ž‘์—…์€ develop ๋ธŒ๋žœ์น˜์— ์ทจํ•ฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋˜๊ณ , ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด๊ณ  master ๋ธŒ๋žœ์น˜๋กœ merge ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

1) ์‹ ๊ทœ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ

  • ๊ฐœ๋ฐœ์ž๋Š”ย developย ๋ธŒ๋žœ์น˜๋กœ๋ถ€ํ„ฐ ๋ณธ์ธ์ด ์‹ ๊ทœ ๊ฐœ๋ฐœํ•  ๊ธฐ๋Šฅ์„ ์œ„ํ•œย featureย ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑ
  • ๊ธฐ๋Šฅ์ด ์™„์„ฑ๋˜๋ฉด develop ๋ธŒ๋žœ์น˜๋กœ merge

2) ๋ผ์ด๋ธŒ ์„œ๋ฒ„๋กœ ๋ฐฐํฌ

  • feature ๋ธŒ๋žœ์น˜๋“ค์ด ๋ชจ๋‘ develop ๋ธŒ๋žœ์น˜์— merge ๋˜์—ˆ๋‹ค๋ฉด QA๋ฅผ ์œ„ํ•ดย release ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑ
  • release ๋ธŒ๋žœ์น˜๋ฅผ ํ†ตํ•ด ์˜ค๋ฅ˜๊ฐ€ ํ™•์ธ๋œ๋‹ค๋ฉดย release ๋ธŒ๋žœ์น˜ ๋‚ด์—์„œ ์ˆ˜์ •์„ ์ง„ํ–‰
  • QA์™€ ํ…Œ์ŠคํŠธ๋ฅผ ๋ชจ๋‘ ํ†ต๊ณผํ–ˆ๋‹ค๋ฉด, ๋ฐฐํฌ๋ฅผ ์œ„ํ•ดย release ๋ธŒ๋žœ์น˜๋ฅผย master ๋ธŒ๋žœ์น˜ ์ชฝ์œผ๋กœ merge
  • ๋งŒ์ผย release ๋ธŒ๋žœ์น˜ ๋‚ด๋ถ€์—์„œ ์˜ค๋ฅ˜ ์ˆ˜์ •์ด ์ง„ํ–‰๋˜์—ˆ์„ ๊ฒฝ์šฐ ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•ดย develop ๋ธŒ๋žœ์น˜ ์ชฝ์—๋„ merge๋ฅผ ์ง„ํ–‰

๐Ÿค” QA๋ž€?

  • ํ’ˆ์งˆ ๊ฒ€์ฆ

3) ๋ฐฐํฌ ํ›„ ๊ด€๋ฆฌ

๐Ÿ“Œ Github Flow

์ž๋™ํ™” ๊ฐœ๋…์ด ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค๋ผ๋Š” ํฐ ํŠน์ง•์ด ์กด์žฌํ•˜๋ฉฐ ๋งŒ์ผ ์ž๋™ํ™”๊ฐ€ ์ ์šฉ๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ณณ์—์„œ๋งŒ ์ˆ˜๋™์œผ๋กœ ์ง„ํ–‰

๋ธŒ๋žœ์น˜ ์ƒ์„ฑ

  • ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ, ๋ฒ„๊ทธ ํ”ฝ์Šค ๋“ฑ ์–ด๋–ค ์ด์œ ๋กœ๋“  ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘
  • ๋ธŒ๋žœ์น˜ ์ด๋ฆ„์„ ํ†ตํ•ด ์˜๋„๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๋“œ๋Ÿฌ๋‚ด๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”
  • Git-flow์™€๋Š” ๋‹ค๋ฅด๊ฒŒ feature ๋ธŒ๋žœ์น˜๋‚˜ develop ๋ธŒ๋žœ์น˜๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ฐœ๋ฐœ, ์ปค๋ฐ‹, ํ‘ธ์‰ฌ

  • ๋ธŒ๋žœ์น˜์™€ ๊ฐ™์ด ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€์— ์˜์กดํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€๋ฅผ ์ตœ๋Œ€ํ•œ ์ƒ์„ธํ•˜๊ฒŒ ์ ์–ด์ฃผ๋Š” ๊ฒƒ์ด ์ค‘์š”

PR(Pull Request) ์ƒ์„ฑ

  • ํ”ผ๋“œ๋ฐฑ์ด๋‚˜ ๋„์›€์ด ํ•„์š”ํ•  ๋•Œ, ๊ทธ๋ฆฌ๊ณ  merge ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ๋Š” pull request(PR)๋ฅผ ์ƒ์„ฑ

github flow vs git flow

  • 1๊ฐœ์›” ์ด์ƒ์˜ ๊ธด ํ˜ธํก์œผ๋กœ ๊ฐœ๋ฐœํ•˜์—ฌ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฐฐํฌ, QA ๋ฐ ํ…Œ์ŠคํŠธ, hotfix ๋“ฑ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋ ฅ์ด ์žˆ๋Š” ํŒ€์ด๋ผ๋ฉด git-flow๊ฐ€ ์ ํ•ฉ
  • ์ˆ˜์‹œ๋กœ ๋ฆด๋ฆฌ์ฆˆ ๋˜์–ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š” ์„œ๋น„์Šค๋ฅผ ์ง€์†์ ์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ํŒ€์ด๋ผ๋ฉด github-flow ์™€ ๊ฐ™์€ ๊ฐ„๋‹จํ•œ work-flow๊ฐ€ ์ ํ•ฉ

์ฐธ๊ณ 

profile
๋…ธ๋ ฅ์€ ๋ฐฐ์‹ ํ•˜์ง€ ์•Š์•„ ๐Ÿ”ฅ

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