...

GIT ๋ธ๋์น ์ ๋ต
๋ธ๋์น ์ ๋ต์ด๋ ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ํ๋์ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ๋ ํ๊ฒฝ์์ ์ ์ฅ์๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๊ธฐ ์ํ work-flow๋ค.
๋ธ๋์น์ ์์ฑ, ์ญ์ , ๋ณํฉ ๋ฑ git์ ์ ์ฐํ ๊ตฌ์กฐ๋ฅผ ํ์ฉํด์, ๊ฐ ๊ฐ๋ฐ์๋ค์ ํผ๋์ ์ต๋ํ ์ค์ด๋ฉฐ ๋ค์ํ ๋ฐฉ์์ผ๋ก ์์ค๋ฅผ ๊ด๋ฆฌํ๋ ์ญํ ์ ํ๋ค.
์ฆ, ๋ธ๋์น ์์ฑ์ ๊ท์น์ ๋ง๋ค์ด์ ํ์ ์ ์ ์ฐํ๊ฒ ํ๋ ๋ฐฉ๋ฒ๋ก ์ ๋งํ๋ค.
๋ง์ผ ๋ธ๋์น ์ ๋ต์ด ์์ผ๋ฉด?
๋ธ๋์น ์ ๋ต์ด ์์ ๋ ๋จ์ ์ ๊น์ ์ฌ์ฉํ์ง ์ผ๋ง ์๋๋ ๊ฐ๋ฐ์๋ผ๋ฉด ๋ชจ๋ ๊ฒช์ด๋ณธ ์ํฉ๋ค์ผ ๊ฒ์ด๋ค.
- ์ด๋ค ๋ธ๋์น๊ฐ ์ต์ ๋ธ๋์น์ง?
- ์ด๋ค ๋ธ๋์น๋ฅผ ๋์ด์์ ๊ฐ๋ฐ์ ์์ํด์ผ ํ์ง?
- ์ด๋์ Push๋ฅผ ๋ณด๋ด์ผ ํ์ง?
- ํซํฝ์ค๋ฅผ ํด์ผํ๋๋ฐ ์ด๋ค ๋ธ๋์น๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ ํด์ผํ ๊น?
- ๋ฐฐํฌ ๋ฒ์ ์ ์ด๋ค ๊ฑธ ๊ณจ๋ผ์ผํ์ง?
๊ท๋ชจ๊ฐ ์ด๋์ ๋ ์ด์ ๋๋ ์ ์ฅ์๋ฅผ ์๋๋ก ์ถฉ๋ถํ ๊ฒช์ด๋ณธ ์ํฉ์ผ ๊ฒ์ด๋ค.
์ด๋ฐ ์ํฉ์ ์ต์ํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๊ฒ์ด ๋ฐ๋ก ๋ธ๋์น ์ ๋ต์ด๋ค.
์ด๋ฒ ์๊ฐ์๋ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ 2๊ฐ์ง ๋ธ๋์น ์ ๋ต์ ๋ํด ์์๋ณด๋ ์๊ฐ์ ๊ฐ์ ธ๋ณด๊ฒ ๋ค.
- git-flow ์ ๋ต
- github-flow ์ ๋ต
GIT-FLOW ์ ๋ต

- ๊ธฐ๋ณธ์ ์ธ ๊ฐ์ง์ ์ด๋ฆ์ ์๋์ 5๊ฐ์ง๋ก ๊ตฌ๋ถํ๊ณค ํ๋ค.
- feature > develop > release > hotfix > master
- ์ ์์๋ค์ ์ผ์ชฝ์ผ๋ก ๊ฐ์๋ก ํฌ๊ด์ ์ธ ๊ฐ์ง์ด๋ฉฐ master branch๋ฅผ ๋ณํฉํ ๊ฒฝ์ฐ ๊ทธ ์ผ์ชฝ์ ์๋ hotfix ๋ฑ ๋ชจ๋ ๊ฐ์ง๋ค์ ์๋ ์ปค๋ฐ๋ค๋ ๋ณํฉํ๋๋ก ๊ตฌ์ฑํ๊ฒ ๋๋ค.
- 5๊ฐ์ง ์ค, ํญ์ ์ ์ง๋๋ ๋ฉ์ธ ๋ธ๋์น master, develop 2๊ฐ์ง์ merge ๋๋ฉด ์ฌ๋ผ์ง๋ ๋ณด์กฐ ๋ธ๋์น feature, release, hotfix 3๊ฐ์ง๋ก ๊ตฌ์ฑ๋๋ค.
Git-flow ๋ธ๋์น ๊ตฌ์กฐ

- master : ๋ผ์ด๋ธ ์๋ฒ์ ์ ํ์ผ๋ก ์ถ์๋๋ ๋ธ๋์น.
- develop : ๋ค์ ์ถ์ ๋ฒ์ ์ ๋๋นํ์ฌ ๊ฐ๋ฐํ๋ ๋ธ๋์น.
- feature : ์ถ๊ฐ ๊ธฐ๋ฅ ๊ฐ๋ฐ ๋ธ๋์น. develop ๋ธ๋์น์ ๋ค์ด๊ฐ๋ค.
- release : ๋ค์ ๋ฒ์ ์ถ์๋ฅผ ์ค๋นํ๋ ๋ธ๋์น. develop ๋ธ๋์น๋ฅผ release ๋ธ๋์น๋ก ์ฎ๊ธด ํ QA, ํ ์คํธ๋ฅผ ์งํํ๊ณ master ๋ธ๋์น๋ก ํฉ์น๋ค.
- hotfix : master ๋ธ๋์น์์ ๋ฐ์ํ ๋ฒ๊ทธ๋ฅผ ์์ ํ๋ ๋ธ๋์น.
๋ฉ์ธ ๋ธ๋์น
๋ฉ์ธ ๋ธ๋์น๋ master ๋ธ๋์น์ develop ๋ธ๋์น ๋ ์ข ๋ฅ๋ฅผ ๋งํ๋ค.

master ๋ธ๋์น๋ ๋ฐฐํฌ ๊ฐ๋ฅํ ์ํ๋ง์ ๊ด๋ฆฌํ๋ ๋ธ๋์น๋ฅผ ๋งํ๋ฉฐ,
develop๋ธ๋์น๋ ๋ค์์ ๋ฐฐํฌํ ๊ฒ์ ๊ฐ๋ฐํ๋ ๋ธ๋์น์ด๋ค.
์ฆ develop ๋ธ๋์น๋ ํตํฉ ๋ธ๋์น์ ์ญํ ์ ํ๋ฉฐ, ํ์์๋ ์ด ๋ธ๋์น๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐ์ ์งํํ๋ค.
๋ณด์กฐ ๋ธ๋์น
๋ณด์กฐ ๋ธ๋์น๋ ํผ์ฒ ๋ธ๋์น(feature branch) ๋๋ ํ ํฝ ๋ธ๋์น(topic branch)๋ฅผ ๋งํ๋ค.

- ๊ฐ์ง๊ฐ ๋ป์ด๋์ค๋ ๊ณณ : develop
- ๋ป์ด๋๊ฐ๋ ๊ฐ์ง๊ฐ ๋ค์ ํฉ์ณ์ง๋ ๊ณณ : develop
- ์ด๋ฆ ์ค์ : master, develop, release-*, hotfix-*๋ฅผ ์ ์ธํ๊ธฐ๋ง ํ๋ฉด ์์ ๋กญ๊ฒ ์ด๋ฆ ์ค์ ์ด ๊ฐ๋ฅํ๋ค.
- ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ ๊ฐ์ง์ด๋ค.
master ๋ธ๋์น์์ develop ๋ธ๋์น๋ฅผ ๋ง๋ค์๊ณ ,
develop ๋ธ๋์น์์ ๋ค์ feature ๋ธ๋์น๋ฅผ ๋๋ ์์ ์ ํ๊ณ ์๋ ๊ฒ์ ๊ทธ๋ฆผ์ ํตํด ์ ์ ์๋ค.
develop ๋ธ๋์น์๋ ๊ธฐ์กด์ ์ ์๋ํ๋ ๊ฐ๋ฐ์ฝ๋๊ฐ ๋ด๊ฒจ์์ผ๋ฉฐ,
๋ณด์กฐ ๋ธ๋์น๋ ์๋ก ๋ณ๊ฒฝ๋ ๊ฐ๋ฐ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ๊ณ ๊ฐ๊ฐ ๋ณด์กดํ๋ ์ญํ ์ ํ๋ค.
์ฆ, ๋ณด์กฐ ๋ธ๋์น๋ ๊ธฐ๋ฅ์ ๋ค ์์ฑํ ๋๊น์ง ์ ์งํ๊ณ , ๋ค ์์ฑ๋๋ฉด develop ๋ธ๋์น๋ก merge ํ๊ณ ๊ฒฐ๊ณผ๊ฐ ์ข์ง ๋ชปํ๋ฉด ๋ฒ๋ฆฌ๋ ๋ฐฉํฅ์ ์ทจํ๋ค.
๋ณด์กฐ ๋ธ๋์น๋ ๋ณดํต ๊ฐ๋ฐ์ ์ ์ฅ์์๋ง ์๋ ๋ธ๋์น๊ณ , origin์๋ pushํ์ง ์๋๋ค.
๋ฆด๋ฆฌ์ฆ ๋ธ๋์น(release branch)
๋ฆด๋ฆฌ์ฆ ๋ธ๋์น๋ ๋ฐฐํฌ๋ฅผ ์ํ ์ต์ข ์ ์ธ ๋ฒ๊ทธ ์์ ๋ฑ์ ๊ฐ๋ฐ์ ์ํํ๋ ๋ธ๋์น๋ฅผ ๋งํ๋ค.

- ๊ฐ์ง๊ฐ ๋ป์ด๋์ค๋ ๊ณณ : develop
- ๋ป์ด๋๊ฐ๋ ๊ฐ์ง๊ฐ ๋ค์ ํฉ์ณ์ง๋ ๊ณณ : develop, master
- ์ด๋ฆ ์ค์ : release-*
- ์๋ก์ด ์ ํ์ ๋ฐฐํฌํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ ๊ฐ์ง์ด๋ค.
develop ๋ธ๋์น์ ๋ฒ์ ์ ํฌํจ๋๋ ๊ธฐ๋ฅ์ด merge ๋์๋ค๋ฉด QA๋ฅผ ์ํด develop ๋ธ๋์น์์๋ถํฐ release ๋ธ๋์น๋ฅผ ์์ฑํ๋ค.
๋ฐฐํฌ ๊ฐ๋ฅํ ์ํ๊ฐ ๋๋ฉด master ๋ธ๋์น๋ก ๋ณํฉ์ํค๊ณ , ์ถ์๋ master ๋ธ๋์น์ ๋ฒ์ ํ๊ทธ(ex, v1.0, v0.2)๋ฅผ ์ถ๊ฐํ๋ค.
release ๋ธ๋์น์์ ๊ธฐ๋ฅ์ ์ ๊ฒํ๋ฉฐ ๋ฐ๊ฒฌํ ๋ฒ๊ทธ ์์ ์ฌํญ์ develop ๋ธ๋์น์๋ ์ ์ฉํด์ค์ผ ํ๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๋ฐฐํฌ ์๋ฃ ํ develop ๋ธ๋์น์ ๋ํด์๋ merge ์์ ์ ์ํํด์ผ ํ๋ค.
ํซํฝ์ค ๋ธ๋์น(hotfix branch)
ํซํฝ์ค ๋ธ๋์น๋ ๋ฐฐํฌํ ๋ฒ์ ์์ ๊ธด๊ธํ๊ฒ ์์ ํ ํ์๊ฐ ์์ ๋ master ๋ธ๋์น์์ ๋ถ๋ฆฌํ๋ ๋ธ๋์น๋ฅผ ๋งํ๋ค.

- ๊ฐ์ง๊ฐ ๋ป์ด๋์ค๋ ๊ณณ : master
- ๋ป์ด๋๊ฐ๋ ๊ฐ์ง๊ฐ ๋ค์ ํฉ์ณ์ง๋ ๊ณณ : develop, master
- ์ด๋ฆ ์ค์ : hotfix-*
- ์ ํ์์ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ์ ๊ฒฝ์ฐ์๋ ์ฒ๋ฆฌ๋ฅผ ์ํด ์ด ๊ฐ์ง๋ก ํด๋น ์ ๋ณด๋ค์ ๋ชจ์์ค๋ค. ๋ฒ๊ทธ์ ๋ํ ์์ ์ด ์๋ฃ๋ ํ์๋ develop, master์ ๊ณง์ฅ ๋ฐ์ํด์ฃผ๋ฉฐ tag๋ฅผ ํตํด ๊ด๋ จ ์ ๋ณด๋ฅผ ๊ธฐ๋กํด๋๋ค.
๋ฒ๊ทธ๋ฅผ ์ก๋ ์ฌ๋์ด ์ผํ๋ ๋์์๋ ๋ค๋ฅธ ์ฌ๋๋ค์ develop ๋ธ๋์น์์ ํ๋ ์ผ์ ๊ณ์ํ ์ ์๋ค.
์ด ๋ ๋ง๋ hotfix ๋ธ๋์น์์์ ๋ณ๊ฒฝ ์ฌํญ์ develop ๋ธ๋์น์๋ merge ํ์ฌ ๋ฌธ์ ๊ฐ ๋๋ ๋ถ๋ถ์ ์ฒ๋ฆฌํด์ค์ผ ํ๋ค.
release ๊ฐ์ง๊ฐ ์์ฑ๋์ด ๊ด๋ฆฌ๋๊ณ ์๋ ์ํ๋ผ๋ฉด ํด๋น ๊ฐ์ง์ hotfix์ ๋ณด๋ฅผ ๋ณํฉ์์ผ ๋ค์๋ฒ ๋ฐฐํฌ ์ ๋ฐ์์ด ์ ์์ ์ผ๋ก ์ด๋ฃจ์ด์ง ์ ์๋๋ก ํด์ค๋ค.
Hotfix๋ ๋ณดํต ๋ค๊ธํ๊ฒ ๋ฒ๊ทธ๋ฅผ ๊ณ ์น๊ธฐ ์ํด ์์ฑ๋๋ ๊ฐ์ง์ด๊ธฐ ๋๋ฌธ์ ๋ฒ๊ทธ๋ฅผ ํด๊ฒฐํ๋ฉด ๋ณดํต ์ ๊ฑฐํ๋ ์ผํ์ฑ ๊ฐ์ง๋ค.
Git flow ํ๋ฆ
- ์์์ ์ ์๋ ๊ธฐ๋ณธ ๊ตฌ์กฐ 5๊ฐ ์ค ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๊ฐ์ง๋ master์ develop๊ฐ ๋๋ฉฐ ์ ์์ ์ธ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ธฐ ์ํด์๋ ๋ ๋ชจ๋๋ฅผ ์ด์ฉํด์ผ ํ๋ค.
- ๋๋จธ์ง feature, release, hotfix branch๋ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด ์ง์ฐ๋๋ผ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๊น๋ํ ํ๋ก์ ํธ ์งํ์ ์ํ๋ค๋ฉด ์ง์๋๋ค๊ฐ ํด๋น ๊ฐ์ง๋ฅผ ํ์ฉํด์ผ ํ ์ํฉ์ด ์์ ๋ ๋ง๋ค์ด์ค๋ ๊ด์ฐฎ๋ค.
- ๋๋ถ๋ถ์ ์์ ์ develop์์ ์ทจํฉํ๋ค ์๊ฐํ๋ฉด ๋๋ฉฐ ํ ์คํธ๋ฅผ ํตํด ์ ๋ง ํ์คํ๊ฒ ๋ ์ด์ ๋ณ๋์ฌํญ์ด ์๋ค ์ถ์ ๋ master๋ก์ ๋ณํฉ์ ์งํํ๊ฒ ๋๋ค.
- master๊ฐ ์๋ ๊ฐ์ง๋ค์ master์ ๋ณ๋์ฌํญ์ ๊พธ์คํ ์ฃผ์ํด์ผ ํ๋ค.
1. ์ ๊ท ๊ธฐ๋ฅ ๊ฐ๋ฐ

- ๊ฐ๋ฐ์๋ develop ๋ธ๋์น๋ก๋ถํฐ ๋ณธ์ธ์ด ์ ๊ท ๊ฐ๋ฐํ ๊ธฐ๋ฅ์ ์ํ feature ๋ธ๋์น๋ฅผ ์์ฑํ๋ค.
- feature ๋ธ๋์น์์ ๊ธฐ๋ฅ์ ์์ฑํ๋ฉด develop ๋ธ๋์น์ merge๋ฅผ ์งํํ๊ฒ ๋๋ค.
2. ๋ผ์ด๋ธ ์๋ฒ๋ก ๋ฐฐํฌ

- feature ๋ธ๋์น๋ค์ด ๋ชจ๋ develop ๋ธ๋์น์ merge ๋์๋ค๋ฉด QA๋ฅผ ์ํด release ๋ธ๋์น๋ฅผ ์์ฑํ๋ค.
- release ๋ธ๋์น๋ฅผ ํตํด ์ค๋ฅ๊ฐ ํ์ธ๋๋ค๋ฉด release ๋ธ๋์น ๋ด์์ ์์ ์ ์งํํ๋ค.
- QA์ ํ ์คํธ๋ฅผ ๋ชจ๋ ํต๊ณผํ๋ค๋ฉด, ๋ฐฐํฌ๋ฅผ ์ํด release ๋ธ๋์น๋ฅผ master ๋ธ๋์น ์ชฝ์ผ๋ก mergeํ๋ฉฐ,
- ๋ง์ผ release ๋ธ๋์น ๋ด๋ถ์์ ์ค๋ฅ ์์ ์ด ์งํ๋์์ ๊ฒฝ์ฐ ๋๊ธฐํ๋ฅผ ์ํด develop ๋ธ๋์น ์ชฝ์๋ merge๋ฅผ ์งํํ๋ค.
3. ๋ฐฐํฌ ํ ๊ด๋ฆฌ

- ๋ง์ผ ๋ฐฐํฌ๋ ๋ผ์ด๋ธ ์๋ฒ(master)์์ ๋ฒ๊ทธ๊ฐ ๋ฐ์๋๋ค๋ฉด, hotfix ๋ธ๋์น๋ฅผ ์์ฑํ์ฌ ๋ฒ๊ทธ ํฝ์ค๋ฅผ ์งํํ๋ค.
- ๊ทธ๋ฆฌ๊ณ ์ข ๋ฃ๋ ๋ฒ๊ทธ ํฝ์ค๋ฅผ master์ develop ์ ์ชฝ์ mergeํ์ฌ ๋๊ธฐํ ์ํจ๋ค.
GITHUB-FLOW ์ ๋ต

- Git flow๊ฐ ์ข์ ๋ฐฉ์์ด์ง๋ง GitHub์ ์ ์ฉํ๊ธฐ์๋ ๋ณต์กํ๋ค๋ Scott Chacon์ ํ๋จ์ ๋ฐ๋ผ ๋ง๋ค์ด์ง ์๋ก์ด ๊น ๊ด๋ฆฌ ๋ฐฉ์์ด๋ค.
- ์๋ํ ๊ฐ๋ ์ด ๋ค์ด๊ฐ ์๋ค๋ผ๋ ํฐ ํน์ง์ด ์กด์ฌํ๋ฉฐ ๋ง์ผ ์๋ํ๊ฐ ์ ์ฉ๋์ด ์์ง ์์ ๊ณณ์์๋ง ์๋์ผ๋ก ์งํํ๋ฉด ๋๋ค.
- Git flow์ ๋นํด ํ๋ฆ์ด ๋จ์ํด์ง์ ๋ฐ๋ผ ๊ทธ ๊ท์น๋ ๋จ์ํด์ก๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก master branch์ ๋ํ ๊ท์น๋ง ์ ํํ๊ฒ ์ ๋ฆฝ๋์ด ์๋ค๋ฉด ๋๋จธ์ง ๊ฐ์ง๋ค์ ๋ํด์๋ ํน๋ณํ ๊ด์ฌ๋ฅผ ํ์ง ์์ผ๋ฉฐ pull request๊ธฐ๋ฅ์ ์ฌ์ฉํ๋๋ก ๊ถ์ฅํ๋ค.
GitHub-Flow ํน์ง
- release branch๊ฐ ๋ช ํํ๊ฒ ๊ตฌ๋ถ๋์ง ์์ ์์คํ ์์์ ์ฌ์ฉ์ด ์ ์ฉํ๋ค.
- GitHub ์์ฒด์ ์๋น์ค ํน์ฑ์ ๋ฐฐํฌ์ ๊ฐ๋ ์ด ์๋ ์์คํ ์ผ๋ก ๋์ด์๊ธฐ ๋๋ฌธ์ ์ด flow๊ฐ ์ ์ฉํ๋ค.
- ์น ์๋น์ค๋ค์ ๋ฐฐํฌ์ ๊ฐ๋ ์ด ์์ด์ง๊ณ ์๋ ์ถ์ธ์ด๊ธฐ ๋๋ฌธ์ ์์ผ๋ก๋ Git flow์ ๋นํด ์ฌ์ฉํ๊ธฐ์ ๋ ์์ํ ๊ฒ์ด๋ค.
- hotfix์ ๊ฐ์ฅ ์์ ๊ธฐ๋ฅ์ ๊ตฌ๋ถํ์ง ์๋๋ค.
๋ชจ๋ ๊ตฌ๋ถ์ฌํญ๋ค๋ ๊ฒฐ๊ตญ ๊ฐ๋ฐ์๊ฐ ์ ๋ถ ์์ ํ๋ ์ผ๋ค ์ค ํ๋์ด๊ธฐ ๋๋ฌธ์ด๋ค.
์ด ๋์ ๊ตฌ๋ถํ๋ ๊ฒ์ ์ฐ์ ์์๊ฐ ์ด๋ค ๊ฒ์ด ๋ ๋์์ง์ ๋ํ ๊ฒ์ด๋ค.
Github-Flow ํ๋ฆ
1. ๋ธ๋์น ์์ฑ

Github-flow ์ ๋ต์ ๊ธฐ๋ฅ ๊ฐ๋ฐ, ๋ฒ๊ทธ ํฝ์ค ๋ฑ ์ด๋ค ์ด์ ๋ก๋ ์๋ก์ด ๋ธ๋์น๋ฅผ ์์ฑํ๋ ๊ฒ์ผ๋ก ์์๋๋ค.
๋จ, ์ด๋ ์ฒด๊ณ์ ์ธ ๋ถ๋ฅ ์์ด ๋ธ๋์น ํ๋์ ์์กดํ๊ฒ ๋๊ธฐ ๋๋ฌธ์ ๋ธ๋์น ์ด๋ฆ์ ํตํด ์๋๋ฅผ ๋ช ํํ๊ฒ ๋๋ฌ๋ด๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํ๋ค.
- master ๋ธ๋์น๋ ํญ์ ์ต์ ์ํ๋ฉฐ, stable ์ํ๋ก product์ ๋ฐฐํฌ๋๋ ๋ธ๋์น๋ค. ์ด ๋ธ๋์น์ ๋ํด์๋ ์๊ฒฉํ role๊ณผ ํจ๊ป ์ฌ์ฉํ๋ค
- ์๋ก์ด ๋ธ๋์น๋ ํญ์ master ๋ธ๋์น์์ ๋ง๋ ๋ค
- Git-flow์๋ ๋ค๋ฅด๊ฒ feature ๋ธ๋์น๋ develop ๋ธ๋์น๊ฐ ์กด์ฌํ์ง ์๋๋ค.
- ๊ทธ๋ ์ง๋ง, ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ฑฐ๋ ๋ฒ๊ทธ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ธ๋์น ์ด๋ฆ์ ์์ธํ๊ฒ ์ด๋ค ์ผ์ ํ๊ณ ์๋์ง์ ๋ํด์ ์์ฑํด์ฃผ๋๋ก ํ์
2. ๊ฐ๋ฐ & ์ปค๋ฐ & ํธ์ฌ

๊ฐ๋ฐ์ ์งํํ๋ฉด์ ์ปค๋ฐ์ ๋จ๊ธด๋ค.
์ด๋๋ ๋ธ๋์น์ ๊ฐ์ด ์ปค๋ฐ ๋ฉ์ธ์ง์ ์์กดํด์ผ ํ๊ธฐ ๋๋ฌธ์, ์ปค๋ฐ ๋ฉ์ธ์ง๋ฅผ ์ต๋ํ ์์ธํ๊ฒ ์ ์ด์ฃผ๋ ๊ฒ์ด ์ค์ํ๋ค.
- ์ปค๋ฐ๋ฉ์์ง๋ฅผ ๋ช ํํ๊ฒ ์์ฑํ์
- ์๊ฒฉ์ง ๋ธ๋์น๋ก ์์๋ก push ํ์
- Git-flow์ ์๋ฐ๋๋ ๋ฐฉ์
- ํญ์ ์๊ฒฉ์ง์ ์์ ์ด ํ๊ณ ์๋ ์ผ๋ค์ ์ฌ๋ ค ๋ค๋ฅธ ์ฌ๋๋ค๋ ํ์ธํ ์ ์๋๋ก ํด์ค๋ค
- ์ด๋ ํ๋์จ์ด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํด ์์ ํ๋ ๋ถ๋ถ์ด ์์ด์ง๋๋ผ๋, ์๊ฒฉ์ง์ ์๋ ์์ค๋ฅผ ๋ฐ์์ ์์ ํ ์ ์๋๋ก ํด์ค๋ค
3. PR(Pull Request) ์์ฑ

ํผ๋๋ฐฑ์ด๋ ๋์์ด ํ์ํ ๋, ๊ทธ๋ฆฌ๊ณ merge ์ค๋น๊ฐ ์๋ฃ๋์์ ๋๋ pull request๋ฅผ ์์ฑํ๋ค
- pull request๋ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๋์์ฃผ๋ ์์คํ
- ์ด๊ฒ์ ์ด์ฉํด ์์ ์ ์ฝ๋๋ฅผ ๊ณต์ ํ๊ณ , ๋ฆฌ๋ทฐ๋ฐ๋๋ค.
- merge ์ค๋น๊ฐ ์๋ฃ๋์๋ค๋ฉด master ๋ธ๋์น๋ก ๋ฐ์์ ์๊ตฌํ๋ค.
4. ๋ฆฌ๋ทฐ & ํ ์

Pull-Request๊ฐ master ๋ธ๋์น ์ชฝ์ ํฉ์ณ์ง๋ค๋ฉด ๊ณง์ฅ ๋ผ์ด๋ธ ์๋ฒ์ ๋ฐฐํฌ๋๋ ๊ฒ๊ณผ ๋ค๋ฆ ์์ผ๋ฏ๋ก, ์์ธํ ๋ฆฌ๋ทฐ์ ํ ์๊ฐ ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค.
5. ํ ์คํธ

๋ฆฌ๋ทฐ์ ํ ์๊ฐ ๋๋ฌ๋ค๋ฉด ํด๋น ๋ด์ฉ์ ๋ผ์ด๋ธ ์๋ฒ(ํน์ ํ ์คํธ ํ๊ฒฝ)์ ๋ฐฐํฌํด๋ณธ๋ค.
๋ฐฐํฌ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค๋ฉด ๊ณง์ฅ master ๋ธ๋์น์ ๋ด์ฉ์ ๋ค์ ๋ฐฐํฌํ์ฌ ์ด๊ธฐํ ์ํจ๋ค.
6. ์ต์ข Merge

๋ผ์ด๋ธ ์๋ฒ(ํน์ ํ ์คํธ ํ๊ฒฝ)์ ๋ฐฐํฌํ์์๋ ๋ฌธ์ ๊ฐ ๋ฐ๊ฒฌ๋์ง ์์๋ค๋ฉด ๊ทธ๋๋ก master ๋ธ๋์น์ ํธ์๋ฅผ ํ๊ณ , ์ฆ์ ๋ฐฐํฌ๋ฅผ ์งํํ๋ค.
๋๋ถ๋ถ์ Github-flow ์์ master ๋ธ๋์น๋ฅผ ์ต์ ๋ธ๋์น๋ผ๊ณ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ๋ฐฐํฌ ์๋ํ ๋๊ตฌ๋ฅผ ์ด์ฉํด์ Merge ์ฆ์ ๋ฐฐํฌ๋ฅผ ์ํจ๋ค.
master๋ก merge๋๊ณ push ๋์์ ๋๋, ์ฆ์ ๋ฐฐํฌ๋์ด์ผํ๋ค
- GitHub-flow์ ํต์ฌ
- master๋ก merge๊ฐ ์ผ์ด๋๋ฉด ์๋์ผ๋ก ๋ฐฐํฌ๊ฐ ๋๋๋ก ์ค์ ํด๋๋๋ค. (CI / CD)
github flow vs git flow


- 1๊ฐ์ ์ด์์ ๊ธด ํธํก์ผ๋ก ๊ฐ๋ฐํ์ฌ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฐฐํฌ, QA ๋ฐ ํ ์คํธ, hotfix ๋ฑ ์ํํ ์ ์๋ ์ฌ๋ ฅ์ด ์๋ ํ์ด๋ผ๋ฉด git-flow๊ฐ ์ ํฉํ๋ค
- ์์๋ก ๋ฆด๋ฆฌ์ฆ ๋์ด์ผ ํ ํ์๊ฐ ์๋ ์๋น์ค๋ฅผ ์ง์์ ์ผ๋ก ํ ์คํธํ๊ณ ๋ฐฐํฌํ๋ ํ์ด๋ผ๋ฉด github-flow ์ ๊ฐ์ ๊ฐ๋จํ work-flow๊ฐ ์ ํฉํ๋ค
# ์ฐธ๊ณ ์๋ฃ
https://hyeon9mak.github.io/git-branch-strategy/
https://gmlwjd9405.github.io/2018/05/11/types-of-git-branch.html
https://code.tutsplus.com/courses/continuous-integration-workflow/lessons/development-approaches-git-flow-and-github-flow
https://github.com/SvanBoxel/release-based-workflow/issues/1
์ด ๊ธ์ด ์ข์ผ์ จ๋ค๋ฉด ๊ตฌ๋ & ์ข์์
์ฌ๋ฌ๋ถ์ ๊ตฌ๋
๊ณผ ์ข์์๋
์ ์์๊ฒ ํฐ ํ์ด ๋ฉ๋๋ค.