Skip to content

Latest commit

ย 

History

History
107 lines (83 loc) ยท 7.44 KB

Git-Flow.md

File metadata and controls

107 lines (83 loc) ยท 7.44 KB

GitFlow

Git-flow๋Š” ๊ธฐ๋Šฅ์ด ์•„๋‹ˆ๋ผ ์„œ๋กœ๊ฐ„์˜ ์•ฝ์†์ธ ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค.
Vincent Driessen์˜ ๋ธ”๋กœ๊ทธ ๊ธ€์— ์˜ํ•ด ๋„๋ฆฌ ํผ์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ  ํ˜„์žฌ๋Š” Git์œผ๋กœ ๊ฐœ๋ฐœํ•  ๋•Œ ๊ฑฐ์˜ ํ‘œ์ค€๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค.

GitFlow ๊ตฌ์„ฑ

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

master์™€ develop๊ฐ€ ์ค‘์š”ํ•œ ๋งค์ธ ๋ธŒ๋žœ์น˜์ด๊ณ  ๋‚˜๋จธ์ง€๋Š” ํ•„์š”์— ์˜ํ•ด์„œ ์šด์˜ํ•˜๋Š” ๋ธŒ๋žœ์น˜๋ผ๊ณ  ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

GitFlow ๋ชจ๋ธ

1f

  1. master๋ธŒ๋žœ์น˜์—์„œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋™์ผํ•œ ๋ธŒ๋žœ์น˜๋ฅผ develop์—๋„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋“ค์€ ์ด develop ๋ธŒ๋žœ์น˜์—์„œ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  3. ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€ ํšŒ์›๊ฐ€์ž…, ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋“ฑ์˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„์ด ํ•„์š”ํ•  ๊ฒฝ์šฐ A๊ฐœ๋ฐœ์ž๋Š” develop ๋ธŒ๋žœ์น˜์—์„œ feature ๋ธŒ๋žœ์น˜๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑํ•ด์„œ ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ  B๊ฐœ๋ฐœ์ž๋„ develop ๋ธŒ๋žœ์น˜์—์„œ feature ๋ธŒ๋žœ์น˜๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑํ•ด์„œ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  4. ์™„๋ฃŒ๋œ feature ๋ธŒ๋žœ์น˜๋Š” ๊ฒ€ํ† ๋ฅผ ๊ฑฐ์ณ ๋‹ค์‹œ develop ๋ธŒ๋žœ์น˜์— ํ•ฉ์นฉ๋‹ˆ๋‹ค. (Merge)
  5. ์ด์ œ ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ์™„๋ฃŒ๋˜๋ฉด develop ๋ธŒ๋žœ์น˜๋ฅผ release ๋ธŒ๋žœ์น˜๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  QA(ํ’ˆ์งˆ๊ฒ€์‚ฌ)๋ฅผ ํ•˜๋ฉด์„œ ๋ณด์™„์ ์„ ๋ณด์™„ํ•˜๊ณ  ๋ฒ„๊ทธ๋ฅผ ํ”ฝ์Šคํ•ฉ๋‹ˆ๋‹ค.
  6. ๋ชจ๋“  ๊ฒƒ์ด ์™„๋ฃŒ๋˜๋ฉด ์ด์ œ release ๋ธŒ๋žœ์น˜๋ฅผ master ๋ธŒ๋žœ์น˜์™€ develop ๋ธŒ๋žœ์น˜๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. master ๋ธŒ๋žœ์น˜์—์„œ ๋ฒ„์ „์ถ”๊ฐ€๋ฅผ ์œ„ํ•ด ํƒœ๊ทธ๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑํ•˜๊ณ  ๋ฐฐํฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.
  7. ๋ฐฐํฌ๋ฅผ ํ–ˆ๋Š”๋ฐ ๋ฏธ์ฒ˜ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ•œ ๋ฒ„๊ทธ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ hotfix ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์–ด ๊ธด๊ธ‰ ์ˆ˜์ • ํ›„ ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ฐ”๋กœ ์ˆ˜์ • ๋ฐฐํฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

GitFlow ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

branch๋ฅผ merge ํ•  ๋•Œ๋Š” ํ•ญ์ƒ --no-ff ์˜ต์…˜์„ ๋ถ™์—ฌ์„œ branch์— ๋Œ€ํ•œ ๊ธฐ๋ก์ด ์‚ฌ๋ผ์ง€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ์„ ์›์น™์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. 1f

develop / master

GitFlow๋Š” develop๊ณผ master๋ฅผ ๋‚˜๋ˆ„๋Š” ์•„์ด๋””์–ด๊ฐ€ ๊ฐ€์žฅ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ version ๊ด€๋ฆฌ ๋ฐฉ์‹๊ณผ์˜ ์ฐจ๋ณ„์ ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.
๋‚˜๋จธ์ง€ feature, release, hotfix ๋ธŒ๋žœ์น˜๋“ค์€ develop๊ณผ master๋ฅผ ๋‚˜๋ˆˆ ๊ฒฐ์ •์— ๋‹ค๋ผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

1f

  • master ๋Š” ํ˜„์žฌ production์˜ ์ƒํƒœ์™€ ์ผ์น˜ํ•˜๋Š” branch ์ž…๋‹ˆ๋‹ค.
  • develop ์€ ํ˜„์žฌ ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋œ ์ƒํƒœ์™€ ์ผ์น˜ํ•˜๋Š” branch ์ž…๋‹ˆ๋‹ค.
    • ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์€ ๋‹ค์Œ ๋ฆด๋ฆฌ์ฆˆ๋ฅผ ์œ„ํ•ด ์–ธ์ œ๋“  ๋ฐฐํฌ๋  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.
  • ์ด ๋‘ branch ๋Š” (ํ”„๋กœ์ ํŠธ๊ฐ€ ์กด์žฌํ•˜๋Š” ํ•œ) ์˜์›ํžˆ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

feature branches

  • ๋ฌธ์ œ์ƒํ™ฉ
    1. develop ์—์„œ ์ƒˆ๋กœ์šด feature ์ž‘์—…์„ commit ํ•ฉ๋‹ˆ๋‹ค.
    2. origin/develop ์— push๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.
    3. ๊ทธ ์‚ฌ์ด์— ๋ˆ„๊ตฐ๊ฐ€ commit์„ ํ•œ ์‚ฌ๋žŒ์ด ์žˆ๋‹ค๋ฉด ์ถฉ๋Œ์ด ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค.

1f

  • ๋ชฉ์ 
    develop ์„ ํ˜„์žฌ ๊ฐœ๋ฐœ ์™„๋ฃŒ ์ƒํƒœ์™€ ์ผ์น˜์‹œํ‚ค๋ฉด์„œ๋„ ๋‹ค๋ฅธ ๋™๋ฃŒ์™€ conflict๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š๋„๋ก ์ž‘์—… ํ•˜๊ธฐ ์œ„ํ•ด feature branches๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ž‘์—…
    1. develop ์—์„œ feature branch ๋ฅผ ์ƒ์„ฑํ•ด์„œ ์ƒˆ๋กœ์šด ์ž‘์—…์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
      • ex. feature/ISSUE-101
    2. feature branch ์—์„œ ์ž‘์—…์ด ๋๋‚˜๋ฉด feature branch๋ฅผ ์ตœ์‹  develop ์— merge ํ•ฉ๋‹ˆ๋‹ค.
    3. conflict ์—†์ด ๊น”๋”ํ•˜๊ฒŒ ํ•ด๊ฒฐ ๋ฉ๋‹ˆ๋‹ค.

1f

release branches

  • ๋ฌธ์ œ์ƒํ™ฉ
    1. ๋ฐฐํฌ๋ฅผ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค.
    2. develop์—์„œ ChangeLog.md๋„ ์ž‘์„ฑํ•˜๊ณ  version๋ช…๋„ ๋ฐ”๊ฟ”์ฃผ๊ณ  ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ๋ช‡๋ช‡ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•ด์ค๋‹ˆ๋‹ค.
    3. develop์„ master์— mergeํ•˜๊ณ  ๋ฐฐํฌํ•˜์ง€๋งŒ release์˜ feature๊ฐ€ ์˜๋„์น˜์•Š๊ฒŒ ํ•จ๊ป˜ ๋ฐฐํฌ ๋˜๋Š” ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

1f

  • ๋ชฉ์ 
    release ์ค€๋น„๋ฅผ ์‹œ์ž‘ํ•œ ๋’ค์— develop์— merge ๋˜๋Š” ๋‹ค์Œ release feature ๋กœ๋ถ€ํ„ฐ ์•ˆ์ „ํ•œ release ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด release branches๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ž‘์—…
    1. develop ์—์„œ release branch๋ฅผ ์ƒ์„ฑํ•ด์„œ ์ƒˆ๋กœ์šด ์ž‘์—…์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
      • ex. release/1.1.0
    2. release branch์—์„œ version bumping, minor bug fix ๋“ฑ์˜ ์ž‘์—…์ด ๋๋‚˜๋ฉด release branch๋ฅผ ์ตœ์‹  develop ๊ณผ master ์— ๊ฐ๊ฐ merge ํ•ฉ๋‹ˆ๋‹ค.
      • develop: release branch์—์„œ์˜ bug fix ๋“ฑ ์ˆ˜์ • ์‚ฌํ•ญ๋“ค์ด develop ์—๋„ ๋ฐ˜์˜๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ
      • master: ์ƒˆ version์„ release ํ•˜๊ธฐ ์œ„ํ•ด
    3. master ์˜ merge commit์— version์„ tag๋กœ ๋ถ™์—ฌ์ค๋‹ˆ๋‹ค.
      • ex. 1.1.0
    4. ์ด์ œ release branch๋ฅผ ์ƒ์„ฑํ•œ ํ›„์— develop ์— ์–ด๋–ค ์ž‘์—…์ด merge๋˜์–ด๋„ ์•ˆ์ „ํ•˜๊ฒŒ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

1f

hotfix branches

  • ๋ฌธ์ œ์ƒํ™ฉ
    1. production ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    2. develop์—์„œ ์ˆ˜์ •ํ•ด์„œ ์˜ฌ๋ฆฌ๋ ค ํ•˜๋Š”๋ฐ ์ด๋ฏธ ๋‹ค์Œ release์˜ feature๋“ค์ด commit๋œ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

1f

  • ๋ชฉ์ 
    develop ๊ณผ ๋…๋ฆฝ์ ์œผ๋กœ production์—์„œ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ๋ฅผ master ์—์„œ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด hotfix branches๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ž‘์—…
    1. master ์—์„œ hotfix branch๋ฅผ ์ƒ์„ฑํ•ด์„œ bug fix, version bumping๋“ฑ์˜ ์ž‘์—…๋“ค์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
      • ex. hotfix/1.1.1
    2. hotfix branch์—์„œ ์ž‘์—…์ด ๋๋‚˜๋ฉด hotfix branch๋ฅผ ์ตœ์‹  develop ๊ณผ master ์— ๊ฐ๊ฐ mergeํ•ฉ๋‹ˆ๋‹ค.
      • develop: hotfix branch์—์„œ์˜ bug fix ๋“ฑ ์ˆ˜์ • ์‚ฌํ•ญ๋“ค์ด develop ์—๋„ ๋ฐ˜์˜๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ
      • master: ๋ฒ„๊ทธ๊ฐ€ ์ˆ˜์ •๋œ ์ƒˆ version์„ release ํ•˜๊ธฐ ์œ„ํ•ด
    3. master ์˜ merge commit์— version์„ tag๋กœ ๋ถ™์—ฌ์ค๋‹ˆ๋‹ค.
      • ex. 1.1.1
    4. ์ด์ œ develop ์˜ ์ž‘์—…๊ณผ ์ƒ๊ด€์—†์ด master ์— bugfix๋ฅผ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

1f

Reference

https://nvie.com/posts/a-successful-git-branching-model/

https://blog.gangnamunni.com/post/understanding_git_flow/

https://ux.stories.pe.kr/183