๋ธ๋์น ์ ๋ต์ด๋ ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ํ๋์ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ๋ ํ๊ฒฝ์์ ์ ์ฅ์๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๊ธฐ ์ํ work-flow์ด๋ค.
๋ธ๋์น์ ์์ฑ
, ์ญ์
, ๋ณํฉ
๋ฑ git์ ์ ์ฐํ ๊ตฌ์กฐ๋ฅผ ํ์ฉํ์ฌ ๋ธ๋์น ๊ท์น์ ๋ง๋ค์ด ํ์
์ ์ ์ฐํ๊ฒ ๋๋๋ค.
๋ธ๋์น ์ ๋ต์ด ์๋ค๋ฉด??
- ์ด๋ค ๋ธ๋์น๊ฐ ์ต์ ๋ธ๋์น์ง?
- ์ด๋ค ๋ธ๋์น๋ฅผ ๋์ด์์ ๊ฐ๋ฐ์ ์์ํด์ผ ํ์ง?
- ์ด๋์ Push๋ฅผ ๋ณด๋ด์ผ ํ์ง?
- ํซํฝ์ค๋ฅผ ํด์ผํ๋๋ฐ ์ด๋ค ๋ธ๋์น๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ ํด์ผํ ๊น?
- ๋ฐฐํฌ ๋ฒ์ ์ ์ด๋ค ๊ฑธ ๊ณจ๋ผ์ผํ์ง?
์ด๋ฌํ ์ํฉ์ ์ต์ํ ํ๋ ๊ฒ์ด ๋ชฉํ!!!
feature
> develop
> release
> hotfix
> master
์ผ์ชฝ์ผ ์๋ก ํ์ ๋จ๊ณ (ํฌ๊ด์ ์ธ ๊ฐ์ง)
master ๊ฐ์ง๋ฅผ ๋ณํฉํ ๊ฒฝ์ฐ ๊ทธ ์ผ์ชฝ์ ์๋ ๋ชจ๋ ๊ฐ์ง๋ค์ commit๋ค๋ ๋ณํฉ ํ๋๋ก ๊ตฌ์ฑ ํด์ผ ํจ
ํญ์ ์ ์ง๋๋ ๋ฉ์ธ ๋ธ๋์น master
, develop
merge๊ฐ ๋๋ฉด ์ฌ๋ผ์ง๋ ๋ณด์กฐ ๋ธ๋์น feature
, release
, hotfix
โ๏ธ Git-Flow ๋ธ๋์น ๊ตฌ์กฐ)
- masterย : ๋ผ์ด๋ธ ์๋ฒ์ ์ ํ์ผ๋ก **"์ถ์"**๋๋ ๋ธ๋์น - developย : ๋ค์ ์ถ์ ๋ฒ์ ์ ๋๋นํ์ฌ **"๊ฐ๋ฐ"**ํ๋ ๋ธ๋์น - featureย : **"์ถ๊ฐ ๊ธฐ๋ฅ ๊ฐ๋ฐ"** ๋ธ๋์นย (developย ๋ธ๋์น์ ๋ค์ด๊ฐ๋ค.) - releaseย : **"๋ค์ ๋ฒ์ "** ์ถ์๋ฅผ ์ค๋นํ๋ ๋ธ๋์น (developย ๋ธ๋์น๋ฅผย releaseย ๋ธ๋์น๋ก ์ฎ๊ธด ํ QA, ํ ์คํธ๋ฅผ ์งํํ๊ณ ย masterย ๋ธ๋์น๋ก ํฉ์น๋ค.) - hotfixย :ย masterย ๋ธ๋์น์์ ๋ฐ์ํ **"๋ฒ๊ทธ๋ฅผ ์์ "**ํ๋ ๋ธ๋์น
feature
> develop
> release
> hotfix
> master
master
develop
develop ๋ธ๋์น๋ ํตํฉ ๋ธ๋์น์ ์ญํ ์ ํ๋ฉฐ, ํ์์ ํด๋น ๋ธ๋์น๋ก ๊ฐ๋ฐ์ ์งํํ๋ฉด ๋๋ค.
feature
master
develop
develop
์์ ๊ฐ์ง๊ฐ ๋ป์ด๋์ ๋ค์ develop
์ผ๋ก ํฉ์ณ์งdevelop
์๋ ๊ธฐ์กด์ ์ ์๋ํ๋ ๊ฐ๋ฐ์ฝ๋๊ฐ ๋ด๊ฒจ์๊ณ ๋ณด์กฐ ๋ธ๋์น๋ ์๋ก ๋ณ๊ฒฝ๋ ๊ฐ๋ฐ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ๊ณ ๊ฐ๊ฐ ๋ณด์กดํ๋ ์ญํ ์ ํ๋ค.
๋ณด์กฐ ๋ธ๋์น๋ ๊ธฐ๋ฅ์ ๋ค ์์ฑํ ๋๊น์ง ์ ์งํ๊ณ , ๋ค ์์ฑ๋๋ฉด develop
๋ธ๋์น๋ก mergeํ๊ณ ๊ฒฐ๊ณผ๊ฐ ์ข์ง ๋ชปํ๋ฉด ๋ฒ๋ฆฌ๋ ๋ฐฉํฅ์ ๊ฐ์ง๋ค.
์ด๋ ๊ฐ๋ฐ์ ์ ์ฅ์์๋ง ์๊ณ , origin์ pushํ์ง๋ ์๋๋ก ํ๋ค.
develop
์์ ๊ฐ์ง๊ฐ ๋ป์ด๋์ ๋ค์ develop
, master
์ผ๋ก ํฉ์ณ์งdevelop
๋ธ๋์น์ ๋ฒ์ ์ ํฌํจ๋๋ ๊ธฐ๋ฅ์ด merge ๋์๋ค๋ฉด QA๋ฅผ ์ํด develop
๋ธ๋์น์์๋ถํฐ release
๋ธ๋์น๋ฅผ ์์ฑํ๋ค.ย
๋ฐฐํฌ ๊ฐ๋ฅํ ์ํ๊ฐ ๋๋ฉด master
๋ธ๋์น๋ก ๋ณํฉ์ํค๊ณ ,ย ์ถ์๋ master
๋ธ๋์น์ ๋ฒ์ ํ๊ทธ(ex, v1.0, v0.2)๋ฅผ ์ถ๊ฐํ๋ค.
release
๋ธ๋์น์์ ๊ธฐ๋ฅ์ ์ ๊ฒํ๋ฉฐ ๋ฐ๊ฒฌํ ๋ฒ๊ทธ ์์ ์ฌํญ์ develop
๋ธ๋์น์๋ ์ ์ฉํด์ค์ผ ํ๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๋ฐฐํฌ ์๋ฃ ํ develop
๋ธ๋์น์ ๋ํด์๋ merge ์์
์ ์ํํด์ผ ํ๋ค.
master
๋ธ๋์น์์ ๋ถ๋ฆฌํ๋ ๋ธ๋์นmaster
์์ ๊ฐ์ง๊ฐ ๋ป์ด๋์ ๋ค์ develop
, master
์ผ๋ก ํฉ์ณ์ง๋ฒ๊ทธ๋ฅผ ์ก๋ ์ฌ๋์ด ์ผํ๋ ๋์์๋ ๋ค๋ฅธ ์ฌ๋๋ค์ develop
๋ธ๋์น์์ ํ๋ ์ผ์ ๊ณ์ํ ์ ์๋ค.
์ด ๋ ๋ง๋ hotfix
๋ธ๋์น์์์ ๋ณ๊ฒฝ ์ฌํญ์ develop
๋ธ๋์น์๋ merge ํ์ฌ ๋ฌธ์ ๊ฐ ๋๋ ๋ถ๋ถ์ ์ฒ๋ฆฌํด์ค์ผ ํ๋ค.
release
๊ฐ์ง๊ฐ ์์ฑ๋์ด ๊ด๋ฆฌ๋๊ณ ์๋ ์ํ๋ผ๋ฉด ํด๋น ๊ฐ์ง์ hotfix
์ ๋ณด๋ฅผ ๋ณํฉ์์ผ ๋ค์๋ฒ ๋ฐฐํฌ ์ ๋ฐ์์ด ์ ์์ ์ผ๋ก ์ด๋ฃจ์ด์ง ์ ์๋๋ก ํด์ค๋ค.
Hotfix
๋ ๋ณดํต ๋ค๊ธํ๊ฒ ๋ฒ๊ทธ๋ฅผ ๊ณ ์น๊ธฐ ์ํด ์์ฑ๋๋ ๊ฐ์ง์ด๊ธฐ ๋๋ฌธ์ ๋ฒ๊ทธ๋ฅผ ํด๊ฒฐํ๋ฉด ๋ณดํต ์ ๊ฑฐํ๋ ์ผํ์ฑ ๊ฐ์ง์ด๋ค.
โ๏ธ master
์ develop
๊ฐ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ฉฐ ์ ์์ ์ธ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ธฐ ์ํด์๋ ๋ ๋ชจ๋๋ฅผ ์ด์ฉํด์ผ ํ๋ค.
โ๏ธ ๋๋จธ์ง feature
, release
, hotfix
๋ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด ์ง์ฐ๋๋ผ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๊ธฐ ๋๋ฌธ์, ์ํ๋ค๋ฉด ์ง์๋๋ค๊ฐ ํด๋น ๊ฐ์ง๋ฅผ ํ์ฉํด์ผ ํ ๋ ๋ง๋ค์ด์ฃผ์.
โ๏ธ develop
์์ ๋๋ถ๋ถ์ ์์
์ด ์ทจํฉ๋๋ฉฐ ํ
์คํธ๋ฅผ ํตํด ์ ๋ง ํ์คํ๊ฒ ๋ณ๋์ด ์๋ค ์ถ์ ๋ master
๋ก ๋ณํฉํด์ฃผ์ด์ผ ํ๋ค.
โ๏ธ ๋ชจ๋ ๊ฐ์ง๋ค์ master
์ ๋ณ๋์ฌํญ์ ๊พธ์คํ ์ฃผ์ํด์ผ ํ๋ค.
๊ฐ๋ฐ์๋ย developย ๋ธ๋์น๋ก๋ถํฐ ๋ณธ์ธ์ด ์ ๊ท ๊ฐ๋ฐํ ๊ธฐ๋ฅ์ ์ํ feature
ย ๋ธ๋์น๋ฅผ ์์ฑํ๋ค.ย
feature
ย ๋ธ๋์น์์ ๊ธฐ๋ฅ์ ์์ฑํ๋ฉดย develop
ย ๋ธ๋์น์ merge๋ฅผ ์งํํ๊ฒ ๋๋ค.
feature
๋ธ๋์น๋ค์ด ๋ชจ๋ develop
๋ธ๋์น์ merge ๋์๋ค๋ฉด QA๋ฅผ ์ํดย release
ย ๋ธ๋์น๋ฅผ ์์ฑํ๋ค.ย release
ย ๋ธ๋์น๋ฅผ ํตํด ์ค๋ฅ๊ฐ ํ์ธ๋๋ค๋ฉดย release
ย ๋ธ๋์น ๋ด์์ ์์ ์ ์งํํ๋ค.release
ย ๋ธ๋์น๋ฅผย master
ย ๋ธ๋์น ์ชฝ์ผ๋ก mergeํ๋ฉฐ, ๋ง์ผย release
ย ๋ธ๋์น ๋ด๋ถ์์ ์ค๋ฅ ์์ ์ด ์งํ๋์์ ๊ฒฝ์ฐ ๋๊ธฐํ๋ฅผ ์ํดย develop
ย ๋ธ๋์น ์ชฝ์๋ merge๋ฅผ ์งํํ๋ค.master
)์์ ๋ฒ๊ทธ๊ฐ ๋ฐ์๋๋ค๋ฉด,ย hotfix
ย ๋ธ๋์น๋ฅผ ์์ฑํ์ฌ ๋ฒ๊ทธ ํฝ์ค๋ฅผ ์งํํ๋ค.master
์ย develop
ย ์ ์ชฝ์ mergeํ์ฌ ๋๊ธฐํ ์ํจ๋ค.์๋ํ ๊ฐ๋ ์ด ๋ค์ด๊ฐ ์๋ค๋ ํน์ง์ด ์กด์ฌํ๋ฉฐ ์๋ํ๊ฐ ์ ์ฉ๋์ด ์์ง ์์ ๊ณณ์์ ์๋์ผ๋ก ์งํํ๋ฉด ๋๋ค.
Git-Flow ๋ฐฉ์์ ๋นํด ํ๋ฆ์ด ๋จ์ํด์ง๋ฉฐ ๊ทธ ๊ท์น๋ ๋จ์ํด์ก๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก master
branch์ ๋ํ ๊ท์น๋ง ์ ํํ๊ฒ ์ ๋ฆฝ๋์ด ์๋ค๋ฉด ๋๋จธ์ง ๊ฐ์ง๋ค์ ๋ํด์๋ ํน๋ณํ ๊ด์ฌ๋ฅผ ํ์ง ์์ผ๋ฉฐ pull / request๊ธฐ๋ฅ์ ์ฌ์ฉํ๋๋ก ๊ถ์ฅํ๋ค.
โ๏ธ GitHub-Flow ํน์ง
release
branch๊ฐ ๋ช ํํ๊ฒ ๊ตฌ๋ถ๋์ง ์์ ์์คํ ์์์ ์ฌ์ฉ์ด ์ ์ฉํ๋ค.GitHub ์์ฒด์ ์๋น์ค ํน์ฑ์ ๋ฐฐํฌ์ ๊ฐ๋ ์ด ์๋ ์์คํ ์ผ๋ก ๋์ด์๊ธฐ ๋๋ฌธ์ ์ด flow๊ฐ ์ ์ฉํ๋ค.
์น ์๋น์ค๋ค์ ๋ฐฐํฌ์ ๊ฐ๋ ์ด ์์ด์ง๊ณ ์๋ ์ถ์ธ์ด๊ธฐ ๋๋ฌธ์ ์์ผ๋ก๋ Git flow์ ๋นํด ์ฌ์ฉ์ด ์์ํ ๊ฒ์ด๋ค.
hotfix
์ ๊ฐ์ฅ ์์ ๊ธฐ๋ฅ์ ๊ตฌ๋ถํ์ง ์๋๋ค. ๋ชจ๋ ๊ตฌ๋ถ์ฌํญ๋ค๋ ๊ฒฐ๊ตญ ๊ฐ๋ฐ์๊ฐ ์ ๋ถ ์์ ํ๋ ์ผ๋ค ์ค ํ๋์ด๊ธฐ ๋๋ฌธ, ์ด ๋์ ์ฐ์ ์์๊ฐ ์ด๋ค ๊ฒ์ด ๋ ๋์์ง์ ๋ํด์ ๊ตฌ๋ถํ๋ค.
Github-flow ์ ๋ต์ ๊ธฐ๋ฅ ๊ฐ๋ฐ, ๋ฒ๊ทธ ํฝ์ค ๋ฑ ์ด๋ค ์ด์ ๋ก๋ ์๋ก์ด ๋ธ๋์น๋ฅผ ์์ฑํ๋ ๊ฒ์ผ๋ก ์์๋๋ค.
๋จ, ์ด๋ ์ฒด๊ณ์ ์ธ ๋ถ๋ฅ ์์ด ๋ธ๋์น ํ๋์ ์์กดํ๊ฒ ๋๊ธฐ ๋๋ฌธ์ย ๋ธ๋์น ์ด๋ฆ์ ํตํด ์๋๋ฅผ ๋ช ํํ๊ฒ ๋๋ฌ๋ด๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํ๋ค.
master
๋ธ๋์น๋ ํญ์ ์ต์ ์ํ๋ฉฐ, stable ์ํ๋ก product
์ ๋ฐฐํฌ๋๋ ๋ธ๋์น๋ค. ์๊ฒฉํ role๊ณผ ํจ๊ป ์ฌ์ฉํ๋ค.master
๋ธ๋์น์์ ๋ง๋ ๋ค.feature
๋ธ๋์น๋ develop
๋ธ๋์น๊ฐ ์กด์ฌํ์ง ์๋๋ค.๊ฐ๋ฐ์ ์งํํ๋ฉด์ ์ปค๋ฐ์ ๋จ๊ธด๋ค.
๋ธ๋์น์ ๊ฐ์ด ์ปค๋ฐ ๋ฉ์์ง์ ์์กดํด์ผ ํ๊ธฐ ๋๋ฌธ์, ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์ต๋ํ ์์ธํ๊ฒ ์ ์ด์ฃผ๋ ๊ฒ์ด ์ค์ํ๋ค.
ํผ๋๋ฐฑ์ด๋ ๋์์ด ํ์ํ ๋, ๊ทธ๋ฆฌ๊ณ merge ์ค๋น๊ฐ ์๋ฃ๋์์ ๋์๋ pull request๋ฅผ ์์ฑํ๋ค.
master
๋ธ๋์น๋ก ๋ฐ์์ ์๊ตฌํ๋ค.Pull-Request๊ฐย masterย ๋ธ๋์น ์ชฝ์ ํฉ์ณ์ง๋ค๋ฉด ๊ณง์ฅ ๋ผ์ด๋ธ ์๋ฒ์ ๋ฐฐํฌ๋๋ ๊ฒ๊ณผ ๋ค๋ฆ ์์ผ๋ฏ๋ก, ์์ธํ ๋ฆฌ๋ทฐ์ ํ ์๊ฐ ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค.
๋ฆฌ๋ทฐ์ ํ ์๊ฐ ๋๋ฌ๋ค๋ฉด ํด๋น ๋ด์ฉ์ ๋ผ์ด๋ธ ์๋ฒ(ํน์ ํ ์คํธ ํ๊ฒฝ)์ ๋ฐฐํฌํด๋ณธ๋ค.
๋ฐฐํฌ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค๋ฉด ๊ณง์ฅ master
๋ธ๋์น์ ๋ด์ฉ์ ๋ค์ ๋ฐฐํฌํ์ฌ ์ด๊ธฐํ ์ํจ๋ค.
๋ผ์ด๋ธ ์๋ฒ(ํน์ ํ
์คํธ ํ๊ฒฝ)์ ๋ฐฐํฌํ์์๋ ๋ฌธ์ ๊ฐ ๋ฐ๊ฒฌ๋์ง ์์๋ค๋ฉด ๊ทธ๋๋กย master
๋ธ๋์น์ ํธ์๋ฅผ ํ๊ณ , ์ฆ์ ๋ฐฐํฌ๋ฅผ ์งํํ๋ค.
๋๋ถ๋ถ์ Github-flow ์์ ย master
ย ๋ธ๋์น๋ฅผ ์ต์ ๋ธ๋์น๋ผ๊ณ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ๋ฐฐํฌ ์๋ํ ๋๊ตฌ๋ฅผ ์ด์ฉํด์ Merge ์ฆ์ ๋ฐฐํฌ๋ฅผ ์ํจ๋ค.
master
๋ก merge๋๊ณ push ๋์์ ๋๋, ์ฆ์ ๋ฐฐํฌ๋์ด์ผํ๋ค.
master
๋ก merge๊ฐ ์ผ์ด๋๋ฉด ์๋์ผ๋ก ๋ฐฐํฌ๊ฐ ๋๋๋ก ์ค์ ํด๋๋๋ค. (CI / CD)๐ ๋ณธ ํฌ์คํ ์ 'Inpa Dev ๐จโ๐ป'๋์ ํฌ์คํ ์ ์ฐธ๊ณ ํ์์ต๋๋ค.