Git Branch Strategy - Coffee-Street/Document GitHub Wiki

Git Branch Strategy - ๋ธŒ๋žœ์น˜ ํ™œ์šฉ ์ „๋žต

Introduce

Branch๋Š” "๋ถ„๊ธฐ"๋ฅผ ๋œปํ•œ๋‹ค.

์ด ๋ฌธ์„œ์—์„œ๋Š” ํ™œ์šฉํ•˜๊ฒŒ ๋  ๋ธŒ๋žœ์น˜์˜ ์ข…๋ฅ˜์™€ ์—ญํ• ์„ ์ •์˜ํ•˜๊ณ , ๋ธŒ๋žœ์น˜ ํ™œ์šฉ ๊ทœ์น™์„ ๋ช…์‹œํ•œ๋‹ค.
๋˜ํ•œ ๊ฐ ๊ฐœ๋ฐœ ๋‹จ๊ณ„/์ƒํ™ฉ์— ๋”ฐ๋ฅธ ์˜ฌ๋ฐ”๋ฅธ ๋ธŒ๋žœ์น˜์˜ ์„ ํƒ๊ณผ ํ™œ์šฉ ์ „๋žต์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ๋‹ค.

Overview of the "Git Flow"

Overview
์šฐ๋ฆฌ๊ฐ€ ํ™œ์šฉํ•  ์ „๋žต์˜ ์ „์ฒด์ ์ธ ํ๋ฆ„๋„์ด๋‹ค. ์ตœ๋Œ€ํ•œ ๋‹จ์ˆœํ•œ ๋ชจ์Šต์œผ๋กœ ๊ทธ๋ ค๋ดค๋‹ค.

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

Dev. (= Develop)

Branch - Dev.

  • ๊ฐ€์žฅ ์ค‘์‹ฌ์ด ๋˜๋Š” ๋ธŒ๋žœ์น˜
  • ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๋“ค, ๋ฐฐํฌ ์ด์ „ ๋‹จ๊ณ„์˜ ์ฝ”๋“œ๊ฐ€ ๊ด€๋ฆฌ๋˜๋Š” ๋ธŒ๋žœ์น˜
  • ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๊ณผ ๊ฐœ์„ ์‚ฌํ•ญ, ๊ฒฐํ•จ ํ•ด๊ฒฐ์ด ๋ฐ˜์˜๋˜๋Š” ๋ธŒ๋žœ์น˜
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐœ๋ฐœ์ž๋Š” ์ด ๋ธŒ๋žœ์น˜์—์„œ ์ƒˆ๋กœ์šด Feature ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ž‘์—… ํ•˜๊ฒŒ ๋œ๋‹ค.
  • ์ƒ๋ช… ์ฃผ๊ธฐ : ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ์ž‘~ ํ”„๋กœ์ ํŠธ/ํ”„๋กœ๊ทธ๋žจ์ด ๋งํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š”...

Feature

Branch - Feature

  • ๊ฐœ๋ฐœ ๋ฐ ๊ฐ์ข… ๊ฐœ์„ , ๊ฒฐํ•จ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ๋ธŒ๋žœ์น˜.
  • Dev. ๋ธŒ๋žœ์น˜์˜ ํŠน์ • ์‹œ์ ์—์„œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•˜์—ฌ ์ƒ์„ฑ๋œ ๋ธŒ๋žœ์น˜.
  • ๊ฐœ๋ฐœ์ž์˜ ์ž์œ ๋„๊ฐ€ ๋ณด์žฅ๋จ. (๋‚ด๊ฐ€ ๋งŒ๋“  ๋ธŒ๋žœ์น˜์—์„œ๋Š” ์–ด๋–ค ์ง“์„ ํ•˜๋“ , ์–ด๋–ค ๋˜ฅ์„ ์‹ธ๋“  Dev.๋กœ Merge or Rebase๋งŒ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์—๋Š” ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์œผ๋‹ˆ ๋ง˜๊ป ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค!)
  • ์ƒ๋ช… ์ฃผ๊ธฐ : ์ฃผ๋กœ ๊ฐœ๋ฐœ ๋‹จ์œ„(์ด์Šˆ, ๊ธฐ๋Šฅ ๋“ฑ). ๋”์ด์ƒ ํ•„์š” ์—†๋Š” ๊ฒฝ์šฐ ์‚ญ์ œ๋จ.

Master

Branch - Master

  • ์‹ค์ œ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋˜๋ฉฐ, ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ์ด๋ค„์ง€๋Š” ๋ธŒ๋žœ์น˜
  • ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋กœ์˜ Merge๋Š” ์—„๊ฒฉํžˆ ๊ธˆ์ง€๋œ๋‹ค.
  • ์›๋ž˜๋Š” hotfix์™€ ๊ฐ™์€ ํŠน์ˆ˜ํ•œ ์ƒํ™ฉ์ด ์žˆ์ง€๋งŒ, ํ˜„์žฌ๋Š” Dev.์—์„œ ๊ณ„์† ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ ํ•ด์ฃผ๋Š” ๋ฐฉ์‹ ์ฑ„ํƒ.
  • ์ƒ๋ช… ์ฃผ๊ธฐ : ์ฒซ ์ถœ์‹œ ๋ฒ„์ „์ด ์ƒ์„ฑ๋œ ์ดํ›„~ ์—ญ์‹œ ํ”„๋กœ์ ํŠธ/ํ”„๋กœ๊ทธ๋žจ์ด ๋งํ•˜๊ธฐ ์ „๊นŒ์ง€

์ฝ”๋“œ ๋ฐ˜์˜ ์ •์ฑ…

๊ธฐ๋ณธ ์ •์ฑ…

  1. ์ฝ”๋“œ ๋ฐ˜์˜ ๋ฐฉํ–ฅ ๊ธฐ๋ณธ์ ์œผ๋กœ Feature > Dev. > Master. (Featrue์™€ Dev. ์‚ฌ์ด์—์„œ๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋Š”๋ฐ ์•„๋ž˜ ์ฐธ์กฐ.)
  2. ํ•ญ์ƒ Full Merge Request๋ฅผ ํ•œ๋‹ค. Rebase, ๊ฐ•์ œ Merge ๊ธˆ์ง€.
  3. Merge์™€ ํ•จ๊ป˜ ์ฝ”๋“œ๋ฆฌ๋ทฐ ์‹ค์‹œ.

Full Merge Request

  • Dev.์˜ ์•ˆ์ •์„ฑ์„ ํ•ด์น  ์ˆ˜ ์žˆ๋Š” Rebase, ๊ฐ•์ œ Merge ๊ธˆ์ง€
  • Merge Request๋ฅผ ํ†ตํ•ด ํ•ญ์ƒ CI/Pipeline์„ ๊ฑฐ์ณ๊ฐ€๊ฒŒ ๋˜๋ฉฐ, ๊ทธ ๊ณผ์ •์—์„œ Build test, Unit/Regression test ๋“ฑ์ด ์ด๋ค„์ง„๋‹ค.

์ฝ”๋“œ๋ฆฌ๋ทฐ

  • ์ฝ”๋“œ๋ฆฌ๋ทฐ๋ฅผ ์œ„ํ•ด์„œ Merge Request๋ฅผ ์ƒ์„ฑํ•  ๋•Œ 1๋ช… ์ด์ƒ์˜ Assignee๋ฅผ ์„ค์ •.
  • ์ง€์ •๋œ Assignee ์ค‘ 1๋ช… ์ด์ƒ ์ฝ”๋“œ๋ฆฌ๋ทฐ๋ฅผ ํ•ด์•ผ์ง€๋งŒ Merge๊ฐ€ ์ด๋ฃจ์–ด์ง. (์•„๋ฌด๋ฆฌ ๋ชจ๋“  test๊ฐ€ ํ†ต๊ณผํ–ˆ๋‹ค๊ณ  ํ•ด๋„, ๋ฆฌ๋ทฐ๊ฐ€ ๋๋‚˜์ง€ ์•Š์œผ๋ฉด ์†Œ์Šค๊ฐ€ ๋ฐ˜์˜๋˜์ง€ ์•Š์Œ.)
  • Assignee๋Š” ์ตœ๋Œ€ํ•œ ๋น ๋ฅด๊ฒŒ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ์ง„ํ–‰ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๋งค๋„ˆ!
  • Assignee๊ฐ€ ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ๋ฌผ๋ก  ๋ณด๋ฉด ์ข‹๊ฒ ์ง€๋งŒ ๋‹ค ๋ณผ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—, Merge Request ์ƒ์„ฑ ์‹œ ์„ค๋ช…์„ ์ตœ๋Œ€ํ•œ ์ž์„ธํžˆ ์ ์–ด์„œ ์ˆ˜๊ณ ๋ฅผ ๋œ์–ด์ฃผ๋Š” ๊ฒƒ๋„ ๋งค๋„ˆ!

์ƒํ™ฉ๋ณ„ Merge ์ „๋žต

Direct Merge

Direct merge to dev

  • ๋งค์šฐ ๊ฐ„ํŽธํ•œ ๋ฐฉ๋ฒ•.
  • ํ˜„์žฌ ์ž‘์—… ์ค‘์ธ ๋ธŒ๋žœ์น˜์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ Dev.๋กœ ๋ฐ”๋กœ Merge ์‹œ๋„.
  • Merge ์‹คํŒจ ์œ„ํ—˜์ด ์žˆ์Œ.
    • ํŒŒ์ผ ์ถฉ๋Œ : ํ˜„์žฌ ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…ํ•œ ํŒŒ์ผ์„ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐ™์€ ํŒŒ์ผ์„ ์ž‘์—…ํ•˜๊ณ  ์ด๋ฏธ Dev.์— ๋ฐ˜์˜ํ•œ ๊ฒฝ์šฐ.
    • Dev. ๋ฒ„์ „ ๋ฏธํ˜ธํ™˜ : ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ Dev.์— ๋ฐ˜์˜ํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์— ์˜ํ•ด, ๊ธฐ์กด ์†Œ์Šค์ฝ”๋“œ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ์ปดํŒŒ์ผ ๋˜์ง€ ์•Š๋Š” ํ˜„์ƒ. (ํŒŒ์ผ๋ช…/ํด๋ž˜์Šค๋ช…/๋ณ€์ˆ˜๋ช… ๋ณ€๊ฒฝ ๋“ฑ)

Non-Direct Merge

Non direct merge to dev

  • ์กฐ๊ธˆ์€ ๋ฒˆ๊ฑฐ๋กญ๊ธด ํ•˜์ง€๋งŒ ์•ˆ์ „ํ•œ ๋ฐฉ๋ฒ•.
  • ํ˜„์žฌ ์ž‘์—… ์ค‘์ธ ๋ธŒ๋žœ์น˜์™€ Dev.์˜ ๋ฒ„์ „์„ ํ˜ธํ™˜์‹œํ‚จ ํ›„ Merge ์‹œ๋„.
    1. ํ˜„์žฌ ๋ธŒ๋žœ์น˜์— Dev.๋ฅผ Merge. (Dev. to Feature)
    2. Merge ์ดํ›„ ๋ธŒ๋žœ์น˜์˜ ์ƒํƒœ(์ปดํŒŒ์ผ, ๋นŒ๋“œ, ๊ตฌํ˜„ ๊ธฐ๋Šฅ ๋“ฑ) ํ™•์ธ. ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ ํ•ด๊ฒฐ
    3. Dev.์— ํ˜„์žฌ ๋ธŒ๋žœ์น˜๋ฅผ Merge. (Feature to Dev.)

Update

merge dev to master

  • ์ œํ’ˆ์˜ ๋ฐฐํฌ, ์—…๋ฐ์ดํŠธ ๋“ฑ์ด ์ด๋ค„์ง„๋‹ค.
  • Dev.์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ Master ๋ธŒ๋žœ์น˜๋กœ Merge. (Dev. to Master)
  • ๊ทธ ์‹œ๊ธฐ๋Š” Dev. ๋ธŒ๋žœ์น˜์˜ ๊ฐœ๋ฐœ ์ง„ํ–‰ ๋‹จ๊ณ„, ์•ˆ์ •ํ™” ์ƒํƒœ ๋“ฑ์ด ๊ณ ๋ ค๋œ ์ ์ ˆํ•œ ๋•Œ.