Git Branch Strategy - Coffee-Street/Document GitHub Wiki
Git Branch Strategy - ๋ธ๋์น ํ์ฉ ์ ๋ต
Introduce
Branch๋ "๋ถ๊ธฐ"๋ฅผ ๋ปํ๋ค.
์ด ๋ฌธ์์์๋ ํ์ฉํ๊ฒ ๋ ๋ธ๋์น์ ์ข
๋ฅ์ ์ญํ ์ ์ ์ํ๊ณ , ๋ธ๋์น ํ์ฉ ๊ท์น์ ๋ช
์ํ๋ค.
๋ํ ๊ฐ ๊ฐ๋ฐ ๋จ๊ณ/์ํฉ์ ๋ฐ๋ฅธ ์ฌ๋ฐ๋ฅธ ๋ธ๋์น์ ์ ํ๊ณผ ํ์ฉ ์ ๋ต์ ์ดํดํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ์์ฑ๋์๋ค.
Overview of the "Git Flow"
์ฐ๋ฆฌ๊ฐ ํ์ฉํ ์ ๋ต์ ์ ์ฒด์ ์ธ ํ๋ฆ๋์ด๋ค. ์ต๋ํ ๋จ์ํ ๋ชจ์ต์ผ๋ก ๊ทธ๋ ค๋ดค๋ค.
๋ธ๋์น ์๊ฐ
Dev. (= Develop)
- ๊ฐ์ฅ ์ค์ฌ์ด ๋๋ ๋ธ๋์น
- ์๋ก์ด ๊ธฐ๋ฅ๋ค, ๋ฐฐํฌ ์ด์ ๋จ๊ณ์ ์ฝ๋๊ฐ ๊ด๋ฆฌ๋๋ ๋ธ๋์น
- ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ์ฌํญ, ๊ฒฐํจ ํด๊ฒฐ์ด ๋ฐ์๋๋ ๋ธ๋์น
- ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ๋ฐ์๋ ์ด ๋ธ๋์น์์ ์๋ก์ด Feature ๋ธ๋์น๋ฅผ ์์ฑํ์ฌ ์์ ํ๊ฒ ๋๋ค.
- ์๋ช
์ฃผ๊ธฐ : ํ๋ก๊ทธ๋จ์ ์์~
ํ๋ก์ ํธ/ํ๋ก๊ทธ๋จ์ด ๋งํ๊ธฐ ์ ๊น์ง๋...
Feature
- ๊ฐ๋ฐ ๋ฐ ๊ฐ์ข ๊ฐ์ , ๊ฒฐํจ ํด๊ฒฐ์ ์ํ ๋ธ๋์น.
- Dev. ๋ธ๋์น์ ํน์ ์์ ์์ ์์ค์ฝ๋๋ฅผ ๊ทธ๋๋ก ๋ณต์ฌํ์ฌ ์์ฑ๋ ๋ธ๋์น.
- ๊ฐ๋ฐ์์ ์์ ๋๊ฐ ๋ณด์ฅ๋จ.
(๋ด๊ฐ ๋ง๋ ๋ธ๋์น์์๋ ์ด๋ค ์ง์ ํ๋ , ์ด๋ค ๋ฅ์ ์ธ๋ Dev.๋ก Merge or Rebase๋ง ํ์ง ์๋๋ค๋ฉด ๋ค๋ฅธ ๋ธ๋์น์๋ ์ํฅ์ ๋ฏธ์น์ง ์์ผ๋ ๋ง๊ป ๊ฐ๋ฐํ ์ ์๋ค!) - ์๋ช ์ฃผ๊ธฐ : ์ฃผ๋ก ๊ฐ๋ฐ ๋จ์(์ด์, ๊ธฐ๋ฅ ๋ฑ). ๋์ด์ ํ์ ์๋ ๊ฒฝ์ฐ ์ญ์ ๋จ.
Master
- ์ค์ ๋ฐฐํฌ๋ฅผ ์ํ ์ฝ๋๊ฐ ์ ์ฅ๋๋ฉฐ, ๋ฒ์ ๊ด๋ฆฌ๊ฐ ์ด๋ค์ง๋ ๋ธ๋์น
- ๋ค๋ฅธ ๋ธ๋์น๋ก์ Merge๋ ์๊ฒฉํ ๊ธ์ง๋๋ค.
- ์๋๋ hotfix์ ๊ฐ์ ํน์ํ ์ํฉ์ด ์์ง๋ง, ํ์ฌ๋ Dev.์์ ๊ณ์ ๋ฒ์ ์ ๋ฐ์ดํธ ํด์ฃผ๋ ๋ฐฉ์ ์ฑํ.
- ์๋ช
์ฃผ๊ธฐ : ์ฒซ ์ถ์ ๋ฒ์ ์ด ์์ฑ๋ ์ดํ~
์ญ์ ํ๋ก์ ํธ/ํ๋ก๊ทธ๋จ์ด ๋งํ๊ธฐ ์ ๊น์ง
์ฝ๋ ๋ฐ์ ์ ์ฑ
๊ธฐ๋ณธ ์ ์ฑ
- ์ฝ๋ ๋ฐ์ ๋ฐฉํฅ ๊ธฐ๋ณธ์ ์ผ๋ก Feature > Dev. > Master. (Featrue์ Dev. ์ฌ์ด์์๋ ์กฐ๊ธ ๋ค๋ฅผ ์ ์๋๋ฐ ์๋ ์ฐธ์กฐ.)
- ํญ์ Full Merge Request๋ฅผ ํ๋ค. Rebase, ๊ฐ์ Merge ๊ธ์ง.
- 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
- ๋งค์ฐ ๊ฐํธํ ๋ฐฉ๋ฒ.
- ํ์ฌ ์์ ์ค์ธ ๋ธ๋์น์ ๋ณ๊ฒฝ์ฌํญ์ Dev.๋ก ๋ฐ๋ก Merge ์๋.
- Merge ์คํจ ์ํ์ด ์์.
- ํ์ผ ์ถฉ๋ : ํ์ฌ ๋ธ๋์น์์ ์์ ํ ํ์ผ์ ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ๊ฐ์ ํ์ผ์ ์์ ํ๊ณ ์ด๋ฏธ Dev.์ ๋ฐ์ํ ๊ฒฝ์ฐ.
- Dev. ๋ฒ์ ๋ฏธํธํ : ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ Dev.์ ๋ฐ์ํ ๋ณ๊ฒฝ์ฌํญ์ ์ํด, ๊ธฐ์กด ์์ค์ฝ๋ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ์ปดํ์ผ ๋์ง ์๋ ํ์. (ํ์ผ๋ช /ํด๋์ค๋ช /๋ณ์๋ช ๋ณ๊ฒฝ ๋ฑ)
Non-Direct Merge
- ์กฐ๊ธ์ ๋ฒ๊ฑฐ๋กญ๊ธด ํ์ง๋ง ์์ ํ ๋ฐฉ๋ฒ.
- ํ์ฌ ์์
์ค์ธ ๋ธ๋์น์ Dev.์ ๋ฒ์ ์ ํธํ์ํจ ํ Merge ์๋.
- ํ์ฌ ๋ธ๋์น์ Dev.๋ฅผ Merge. (Dev. to Feature)
- Merge ์ดํ ๋ธ๋์น์ ์ํ(์ปดํ์ผ, ๋น๋, ๊ตฌํ ๊ธฐ๋ฅ ๋ฑ) ํ์ธ. ๋ฌธ์ ๋ฐ์ ์ ํด๊ฒฐ
- Dev.์ ํ์ฌ ๋ธ๋์น๋ฅผ Merge. (Feature to Dev.)
Update
- ์ ํ์ ๋ฐฐํฌ, ์ ๋ฐ์ดํธ ๋ฑ์ด ์ด๋ค์ง๋ค.
- Dev.์ ๋ณ๊ฒฝ์ฌํญ์ Master ๋ธ๋์น๋ก Merge. (Dev. to Master)
- ๊ทธ ์๊ธฐ๋ Dev. ๋ธ๋์น์ ๊ฐ๋ฐ ์งํ ๋จ๊ณ, ์์ ํ ์ํ ๋ฑ์ด ๊ณ ๋ ค๋ ์ ์ ํ ๋.