Branch Strategy
๋ธ๋์น ์ข
๋ฅ
main
develop
feature/xxx
release/xxx
hotfix/xxx
์ ์ฒด์ ์ธ ๋ธ๋์น ์ ๋ต ํ๋ฆ
์ด๋ ํ ์ ํ์ ์๊ตฌ(Theme) ๋ฐ์ ์ ํ๋์ repository๊ฐ ์์ฑ๋๋ฉฐ ๊ทธ์ ๋์์ main branch๊ฐ ์์ฑ
main branch๊ฐ ์์ฑ๋๋ฉด ๋ฐ๋ก ๊ฐ๋ฐ์ ์ํ develop branch๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ default branch๋ก ์ค์
Feature branches๋ develop branch๋ก๋ถํฐ ์์ฑ๋๋ฉฐ ํ๋์ ๊ธฐ๋ฅ(Story)์ ์์ฑํ ๋ ๋ง๋ค ๋ฐ์
ํ๋์ feature branch๊ฐ ๊ฐ๋ฐ์ด ์๋ฃ๋๋ฉด develop branch(Epic)์ ๋ณํฉ
Story๊ฐ ๋ชจ์ฌ ํ Epic์ ์ด๋ฃจ๊ฒ๋๋ฉด release branch๊ฐ ์์ฑ
Release branch๊ฐ ์๋ฃ๋๋ฉด main branch์ develop branch ๋ชจ๋์ ๋ณํฉ
๋ง์ฝ main branch์์ ๋ฌธ์ ๊ฐ ๊ฐ์ง๋๋ฉด hotfix branch๋ main branch๋ก ๋ถํฐ ์์ฑ
Hotfix branch๊ฐ ์๋ฃ๋๋ฉด main branch์ develop branch ๋ชจ๋์ ๋ณํฉ
๋ธ๋์น๋ณ ๊ท์น
main
main ๋ธ๋์น๋ ๊ณต์ ๋ฆด๋ฆฌ์ฆ ๊ธฐ๋ก์ ์ ์ฅ
release ๋ธ๋์น๋ก๋ถํฐ์ PR ์๋ฝ์ ํด๋น ํ๋ก์ ํธ์ ๋ด๋น์๊ฐ ์ํ
์์ฒญ์จ release ๋ธ๋์น์ ๋ฌธ์ ๊ฐ ์์์ ํ์คํ ํ์ธํ์์ ์๋ฏธ
develop
develop์ ๋ถ๊ธฐ ๊ธฐ๋ฅ(branch) ๊ฐ๋ฐ์ ํตํฉ ์ง์ ์ญํ
develop์ผ๋ก์ merge๋ ํตํฉ๋๋ branch์ ๋ฆฌ๋ทฐ ๋ฐ ํ ์คํธ๊ฐ ์๋ฃ๋์์์ ์๋ฏธ
feature/xxx
xxx์ ์๋ฏธ๋ ์์ฑ๋๋ ๊ธฐ๋ฅ์ ์๋ฏธ e.g. ์ธ์ฆ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ : feature/auth
ํ๋์ ๊ธฐ๋ฅ์ ์๋ก์ด ๋ธ๋์น๋ฅผ ์์ฑํ์ฌ ๊ฐ๋ฐ๋์ด์ผ ํ๋ฉฐ, ๊ทธ ์ด๋ฆ(naming)์ ํด๋น ๋ธ๋์น๊ฐ ์ด๋ค ๊ธฐ๋ฅ์ ์ํํ๋์ง ๋ช ํํ ํด์ผํจ
ํด๋น branch์ MR์ sprint ํด๊ณ ์ ๋ง์คํฐ์๊ฒ ๋ด๋น์๊ฐ ์์ฒญํ๋ฉฐ, ๋ง์คํฐ๊ฐ ํด๋น ๊ธฐ๋ฅ์ ๋ฌธ์ ์์์ ๋์ ๋ฐ ์๋ฝ์ ์๋ฏธ๋ก ์น์ธ
ํด๋น ๋ธ๋์น ์์ ๋ฐ ์ถ๊ฐ์ ๋ง์ด๋๋ฒ์ ์ด ์ ๊ทธ๋ ์ด๋
์์ฃผ ๊ฐ๋์ ๊ฒฝ์ฐ(์ค์๋์ ๋ฐ๋ผ), ๋ฏธ๋ค๋ฒ์ ์ด ์ ๊ทธ๋ ์ด๋
release/xxx
xxx์ ์๋ฏธ๋ ์ถ์ ๋ฒ์ ์ ๊ท์น์ ๋ฐ๋ฅธ ์ซ์์ ๋์ด e.g. 1.2.3
develop ๋ธ๋์น๊ฐ ์ถ์๋ฅผ ์ํ ์ถฉ๋ถํ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ด ์๋ฃ๋์๊ฑฐ๋ ์ถ์ ์ผ์ ์ด ๋ค๊ฐ์ค๊ณ ์๋ค๋ฉด ์์ฑ
๋ง๋ค์ด์ง release ๋ธ๋์น์์ ์ถ์๋ฅผ ์ํ ์ค๋น ์๋ฃ์ main์ผ๋ก์ PR์์ฑ
์ซ์๋ ๋ฒ์ ๋ช ์ด๋ฉฐ, ์๋๊ณผ ๊ฐ์ ๊ท์น์ผ๋ก โ.โ ์ผ๋ก ๊ตฌ๋ถํ์ฌ ๋์ด
Major version : Theme์ update
Middle version : Epic๋จ์์ update or Epic์ผ๋ก ๋ค๋ฃฐ์๋ ์์ ํฐ ์์ค์ Story update
Miner version : Story๋จ์์ update ๋ฐ ํจ์น
hotfix/xxx
xxx์ ์๋ฏธ๋ ์์ฑ๋ ์ด์์ ์๋ฏธ
hotfix ๋ธ๋์น ์์ฑ์ ์๋ฏธ๋ ์ถ์ํ ์ ํ์ ์ค๋ํ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ์์ ์๋ฏธ
๋ฆด๋ฆฌ์ฆ๋ฅผ ๋น ๋ฅด๊ฒ ํจ์นํ๋ ๋ฐ ์ฌ์ฉ
๋ธ๋์น๋ณ ๋ช
๋ น์ด
Develop Branch
git branch develop
git push -u origin develop
์ด๊ธฐ ์์ฑ์, main ๋ธ๋์น์์ develop ๋ธ๋์น๋ฅผ ์์ฑํ๊ณ ์๋ฒ๋ก ํธ์
Epic๋จ์๋ก main์ merge
Feature Branches
git checkout develop
git checkout -b feature/branch
๊ฐ๊ฐ์ ์๋ก์ด ๊ธฐ๋ฅ(Story)์ ์๋ก์ด ๋ธ๋์น๋ฅผ ์์ฑํ์ฌ ๊ฐ๋ฐํด์ผ ํจ
์ฆ, ์ด๋ค ๋จ์์ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ develop ๋ธ๋์น์์ ํด๋น๋ธ๋์น๋ฅผ ์์ฑํ์ฌ ๊ฐ๋ฐ
๋ธ๋์น ์์ฑ์, ๋ค์ด๋ฐ์ ํด๋น ๋ธ๋์น๊ฐ ์ด๋ค ๊ธฐ๋ฅ์ ์ํํ๋์ง ๋ช ํํ ํด์ผํจ
git checkout develop
git merge feature/branch
git branch -d feature/branch
์ผ๋ฐ์ ์ผ๋ก feature ๋ธ๋์น๋ ๊ฐ์ฅ ์ต์ develop ๋ธ๋์น์์ ์์ฑ
Task๋จ์๋ก commit์ ์งํ
Story ์์ฑ์ ๋ฐฑ์ / ํ์ / ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ์ํด ์๋ฒ(remote)๋ก ํธ์
์ฝ๋๋ฆฌ๋ทฐ ์์ฒญ์, ๋ฆฌ๋ทฐ ์ํ์๋ ํด๋น ๋ธ๋์น๋ฅผ ๊ฐ์ ธ์์ ํ์ธํ๊ณ ๋ฆฌ๋ทฐ
ํ ๊ฐ์ง ๊ธฐ๋ฅ์ ๋ํด ๊ฐ๋ฐ์ด ์๋ฃ๋๋ฉด, ๋ค์ develop ๋ธ๋์น๋ก ๋ณํฉํ๊ณ , feature ๋ธ๋์น๋ ์ญ์
feature ๋ธ๋์น๋ ์ ๋๋ก main ๋ธ๋์น์ ์ง์ ์ ์ผ๋ก ์ํธ์์ฉํ์ง ์์
Release Branches
git checkout develop
git checkout -b release/0.1.0
release ๋ธ๋์น๋ฅผ ๋ง๋๋ ๊ฒ์ ์ถ์ ์์ ์ ๋ง์ถฐ develop ๋ธ๋์น๋ก๋ถํฐ ์์ฑ
develop ๋ธ๋์น๊ฐ ์ถ์๋ฅผ ์ํ ์ถฉ๋ถํ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ด ์๋ฃ๋์๋ค๋ฉด
๋๋ ์ถ์ ์ผ์ ์ด ๋ค๊ฐ์ค๊ณ ์๋ค๋ฉด ๋ง๋ค์ด์ง release ๋ธ๋์น์์ ์ถ์๋ฅผ ์ํ ์ค๋น๋ฅผ ์์
release ๋ธ๋์น์ ์๋ก์ด ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ถ๊ฐํ ์ ์์
๋จ์ง ๋ฒ๊ทธ ์์ , ์ค๋ช ์ ์์ฑ ๋ฐ ๊ธฐํ ์ถ์ ์ค๋น ์์ ๋ง ์ํ
git checkout main
git merge release/0.1.0
git checkout develop
git merge release/0.1.0
git branch -d release/0/1/0
์ถ์ ์ ์ฉ ๋ธ๋์น๋ฅผ ์ฌ์ฉํ์ฌ ์ถ์ ์ค๋น๋ฅผ ํ๋ ํํธ, ๋ค๋ฅธ ํ์ ๋ค์ ์ถ์ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์งํ ๊ฐ๋ฅ
์ถ์ ์ค๋น๊ฐ ์๋ฃ๋๋ฉด, release ๋ธ๋์น๋ฅผ main ๋ธ๋์น์ develop ๋ธ๋์น์ ๋ณํฉํ๊ณ release ๋ธ๋์น๋ ์ญ์
release ๋ธ๋์น๋ฅผ main ๋ธ๋์น์ ๋ณํฉํ๊ณ ๋ฒ์ ์ ๋ณด๋ฅผ ํ๊ทธ
Hotfix Branches
git checkout main
git checkout -b hotfix/branch
hotfix ๋ธ๋์น๋ ๋ฆด๋ฆฌ์ฆ๋ฅผ ๋น ๋ฅด๊ฒ ํจ์นํ๋ ๋ฐ ์ฌ์ฉ
hotfix ๋ธ๋์น๋ main ๋ธ๋์น์์ ์์ฑ
git checkout main
git merge hotfix/branch
git checkout develop
git merge hotfix/branch
git branch -D hotfix/branch
์์ ์ฌํญ์ด ์๋ฃ๋๋ฉด, main ๋ธ๋์น์ develop ๋ธ๋์น (๋๋ ํ์ฌ์ release ๋ธ๋์น)์ ๋ณํฉํ๊ณ main ๋ธ๋์น์ ์ ๋ฐ์ดํธ๋ ๋ฒ์ ์ ํ๊ทธ
์์ ์ฌํญ์ด ์๋ฃ๋๋ฉด, release ๋ธ๋์น์ ๊ฐ์ด hotfix ๋ธ๋์น๋ main ๋ธ๋์น์ develop ๋ธ๋์น ๋ชจ๋์ ๋ณํฉํ๊ณ hotfix ๋ธ๋์น๋ ์ญ์
Last updated