Git-flow
๋ ๊ธฐ๋ฅ์ด ์๋๋ผ ์๋ก๊ฐ์ ์ฝ์์ธ ๋ฐฉ๋ฒ๋ก ์
๋๋ค.
Vincent Driessen์ ๋ธ๋ก๊ทธ ๊ธ์ ์ํด ๋๋ฆฌ ํผ์ง๊ธฐ ์์ํ๊ณ ํ์ฌ๋ Git์ผ๋ก ๊ฐ๋ฐํ ๋ ๊ฑฐ์ ํ์ค๊ณผ ๊ฐ์ด ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ๋ก ์
๋๋ค.
master
: ๊ธฐ์ค์ด ๋๋ ๋ธ๋์น๋ก ์ ํ์ ๋ฐฐํฌํ๋ ๋ธ๋์น์ ๋๋ค.develop
: ๊ฐ๋ฐ ๋ธ๋์น๋ก ๊ฐ๋ฐ์๋ค์ด ์ด ๋ธ๋์น๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ์ ์์ ํ ๊ธฐ๋ฅ๋ค์ ๋ณํฉ(Merge)ํฉ๋๋ค.feature
: ๋จ์ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋ ๋ธ๋์น๋ก ๊ธฐ๋ฅ ๊ฐ๋ฐ์ด ์๋ฃ๋๋ฉด develop ๋ธ๋์น์ ํฉ์นฉ๋๋ค.release
: ๋ฐฐํฌ๋ฅผ ์ํด master ๋ธ๋์น๋ก ๋ณด๋ด๊ธฐ์ ์ ๋จผ์ **QA(ํ์ง๊ฒ์ฌ)**๋ฅผ ํ๊ธฐ์ํ ๋ธ๋์น์ ๋๋ค.hotfix
: master ๋ธ๋์น๋ก ๋ฐฐํฌ๋ฅผ ํ๋๋ฐ ๋ฒ๊ทธ๊ฐ ์๊ฒผ์ ๋ ๊ธด๊ธ ์์ ํ๋ ๋ธ๋์น์ ๋๋ค.
master
์develop
๊ฐ ์ค์ํ๋งค์ธ ๋ธ๋์น
์ด๊ณ ๋๋จธ์ง๋ ํ์์ ์ํด์ ์ด์ํ๋ ๋ธ๋์น๋ผ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค.
master
๋ธ๋์น์์ ์์ํฉ๋๋ค.- ๋์ผํ ๋ธ๋์น๋ฅผ
develop
์๋ ์์ฑํฉ๋๋ค. ๊ฐ๋ฐ์๋ค์ ์ด develop ๋ธ๋์น์์ ๊ฐ๋ฐ์ ์งํํฉ๋๋ค. - ๊ฐ๋ฐ์ ์งํํ๋ค๊ฐ ํ์๊ฐ์
, ์ฅ๋ฐ๊ตฌ๋ ๋ฑ์ ๊ธฐ๋ฅ ๊ตฌํ์ด ํ์ํ ๊ฒฝ์ฐ A๊ฐ๋ฐ์๋ develop ๋ธ๋์น์์
feature
๋ธ๋์น๋ฅผ ํ๋ ์์ฑํด์ ํ์๊ฐ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ B๊ฐ๋ฐ์๋ develop ๋ธ๋์น์์feature
๋ธ๋์น๋ฅผ ํ๋ ์์ฑํด์ ์ฅ๋ฐ๊ตฌ๋ ๊ธฐ๋ฅ์ ๊ตฌํํฉ๋๋ค. - ์๋ฃ๋ feature ๋ธ๋์น๋ ๊ฒํ ๋ฅผ ๊ฑฐ์ณ ๋ค์
develop
๋ธ๋์น์ ํฉ์นฉ๋๋ค. (Merge) - ์ด์ ๋ชจ๋ ๊ธฐ๋ฅ์ด ์๋ฃ๋๋ฉด develop ๋ธ๋์น๋ฅผ
release
๋ธ๋์น๋ก ๋ง๋ญ๋๋ค. ๊ทธ๋ฆฌ๊ณ QA(ํ์ง๊ฒ์ฌ)๋ฅผ ํ๋ฉด์ ๋ณด์์ ์ ๋ณด์ํ๊ณ ๋ฒ๊ทธ๋ฅผ ํฝ์คํฉ๋๋ค. - ๋ชจ๋ ๊ฒ์ด ์๋ฃ๋๋ฉด ์ด์ release ๋ธ๋์น๋ฅผ
master
๋ธ๋์น์develop
๋ธ๋์น๋ก ๋ณด๋ ๋๋ค.master
๋ธ๋์น์์ ๋ฒ์ ์ถ๊ฐ๋ฅผ ์ํด ํ๊ทธ๋ฅผ ํ๋ ์์ฑํ๊ณ ๋ฐฐํฌ๋ฅผ ํฉ๋๋ค. - ๋ฐฐํฌ๋ฅผ ํ๋๋ฐ ๋ฏธ์ฒ ๋ฐ๊ฒฌํ์ง ๋ชปํ ๋ฒ๊ทธ๊ฐ ์์ ๊ฒฝ์ฐ
hotfix
๋ธ๋์น๋ฅผ ๋ง๋ค์ด ๊ธด๊ธ ์์ ํ ํ๊ทธ๋ฅผ ์์ฑํ๊ณ ๋ฐ๋ก ์์ ๋ฐฐํฌ๋ฅผ ํฉ๋๋ค.
branch๋ฅผ merge ํ ๋๋ ํญ์ --no-ff
์ต์
์ ๋ถ์ฌ์ branch์ ๋ํ ๊ธฐ๋ก์ด ์ฌ๋ผ์ง๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๊ฒ์ ์์น์ผ๋ก ํฉ๋๋ค.
GitFlow๋ develop
๊ณผ master
๋ฅผ ๋๋๋ ์์ด๋์ด๊ฐ ๊ฐ์ฅ ํต์ฌ์
๋๋ค. ๋ฐ๋ผ์ ๋ค๋ฅธ version ๊ด๋ฆฌ ๋ฐฉ์๊ณผ์ ์ฐจ๋ณ์ ์ด๊ธฐ๋ ํฉ๋๋ค.
๋๋จธ์ง feature
, release
, hotfix
๋ธ๋์น๋ค์ develop
๊ณผ master
๋ฅผ ๋๋ ๊ฒฐ์ ์ ๋ค๋ผ ์์ฐ์ค๋ฝ๊ฒ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
master
๋ ํ์ฌ production์ ์ํ์ ์ผ์นํ๋ branch ์ ๋๋ค.develop
์ ํ์ฌ ๊ฐ๋ฐ์ด ์๋ฃ๋ ์ํ์ ์ผ์นํ๋ branch ์ ๋๋ค.- ๊ฐ๋ฐ์ด ์๋ฃ๋์๋ค๋ ๊ฒ์ ๋ค์ ๋ฆด๋ฆฌ์ฆ๋ฅผ ์ํด ์ธ์ ๋ ๋ฐฐํฌ๋ ์ ์๋ ์ํ๋ฅผ ๋งํฉ๋๋ค.
- ์ด ๋ branch ๋ (ํ๋ก์ ํธ๊ฐ ์กด์ฌํ๋ ํ) ์์ํ ์กด์ฌํฉ๋๋ค.
- ๋ฌธ์ ์ํฉ
develop
์์ ์๋ก์ด feature ์์ ์ commit ํฉ๋๋ค.origin/develop
์ push๋ฅผ ํฉ๋๋ค.- ๊ทธ ์ฌ์ด์ ๋๊ตฐ๊ฐ commit์ ํ ์ฌ๋์ด ์๋ค๋ฉด ์ถฉ๋์ด ์ผ์ด๋ฉ๋๋ค.
- ๋ชฉ์
develop
์ ํ์ฌ ๊ฐ๋ฐ ์๋ฃ ์ํ์ ์ผ์น์ํค๋ฉด์๋ ๋ค๋ฅธ ๋๋ฃ์ conflict๊ฐ ์๊ธฐ์ง ์๋๋ก ์์ ํ๊ธฐ ์ํดfeature
branches๋ฅผ ์ด์ฉํฉ๋๋ค. - ์์
develop
์์feature
branch ๋ฅผ ์์ฑํด์ ์๋ก์ด ์์ ์ ์์ํฉ๋๋ค.- ex.
feature/ISSUE-101
- ex.
feature
branch ์์ ์์ ์ด ๋๋๋ฉดfeature
branch๋ฅผ ์ต์develop
์ merge ํฉ๋๋ค.- conflict ์์ด ๊น๋ํ๊ฒ ํด๊ฒฐ ๋ฉ๋๋ค.
- ๋ฌธ์ ์ํฉ
- ๋ฐฐํฌ๋ฅผ ์ค๋นํฉ๋๋ค.
develop
์์ChangeLog.md
๋ ์์ฑํ๊ณ version๋ช ๋ ๋ฐ๊ฟ์ฃผ๊ณ ๋ฐฐํฌ๋ฅผ ์ํ ๋ช๋ช ์์ ์ ์ฒ๋ฆฌํด์ค๋๋ค.develop
์master
์ mergeํ๊ณ ๋ฐฐํฌํ์ง๋งrelease
์feature
๊ฐ ์๋์น์๊ฒ ํจ๊ป ๋ฐฐํฌ ๋๋ ์ํฉ์ ๋๋ค.
- ๋ชฉ์
release ์ค๋น๋ฅผ ์์ํ ๋ค์develop
์ merge ๋๋ ๋ค์ release feature ๋ก๋ถํฐ ์์ ํ release ๋ฅผ ํ๊ธฐ ์ํดrelease
branches๋ฅผ ์ด์ฉํฉ๋๋ค. - ์์
develop
์์release
branch๋ฅผ ์์ฑํด์ ์๋ก์ด ์์ ์ ์์ํฉ๋๋ค.- ex.
release/1.1.0
- ex.
release
branch์์ version bumping, minor bug fix ๋ฑ์ ์์ ์ด ๋๋๋ฉดrelease
branch๋ฅผ ์ต์develop
๊ณผmaster
์ ๊ฐ๊ฐ merge ํฉ๋๋ค.develop
:release
branch์์์ bug fix ๋ฑ ์์ ์ฌํญ๋ค์ด develop ์๋ ๋ฐ์๋์ด์ผ ํ๊ธฐ ๋๋ฌธmaster
: ์ version์ release ํ๊ธฐ ์ํด
master
์ merge commit์ version์ tag๋ก ๋ถ์ฌ์ค๋๋ค.- ex.
1.1.0
- ex.
- ์ด์
release
branch๋ฅผ ์์ฑํ ํ์develop
์ ์ด๋ค ์์ ์ด merge๋์ด๋ ์์ ํ๊ฒ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- ๋ฌธ์ ์ํฉ
- production ์์ ๋ฌธ์ ๊ฐ ๋ฐ๊ฒฌ๋์์ต๋๋ค.
develop
์์ ์์ ํด์ ์ฌ๋ฆฌ๋ ค ํ๋๋ฐ ์ด๋ฏธ ๋ค์ release์ feature๋ค์ด commit๋ ์ํฉ์ ๋๋ค.
- ๋ชฉ์
develop
๊ณผ ๋ ๋ฆฝ์ ์ผ๋ก production์์ ๋ฐ์ํ ๋ฌธ์ ๋ฅผmaster
์์ ์ฒ๋ฆฌํ๊ธฐ ์ํดhotfix
branches๋ฅผ ์ด์ฉํฉ๋๋ค. - ์์
master
์์hotfix
branch๋ฅผ ์์ฑํด์ bug fix, version bumping๋ฑ์ ์์ ๋ค์ ์งํํฉ๋๋ค.- ex.
hotfix/1.1.1
- ex.
hotfix
branch์์ ์์ ์ด ๋๋๋ฉดhotfix
branch๋ฅผ ์ต์develop
๊ณผmaster
์ ๊ฐ๊ฐ mergeํฉ๋๋ค.develop
:hotfix
branch์์์ bug fix ๋ฑ ์์ ์ฌํญ๋ค์ด develop ์๋ ๋ฐ์๋์ด์ผ ํ๊ธฐ ๋๋ฌธmaster
: ๋ฒ๊ทธ๊ฐ ์์ ๋ ์ version์ release ํ๊ธฐ ์ํด
master
์ merge commit์ version์ tag๋ก ๋ถ์ฌ์ค๋๋ค.- ex.
1.1.1
- ex.
- ์ด์
develop
์ ์์ ๊ณผ ์๊ด์์ดmaster
์ bugfix๋ฅผ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
https://nvie.com/posts/a-successful-git-branching-model/