1) Git Flow๋
Git Flow๋ Git์ผ๋ก ํ์ ๊ด๋ฆฌ๋ฅผ ํ ๋, ๋ธ๋์น๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ธ๋์น ๊ด๋ฆฌ ์ ๋ต์ด๋ค. (Branch Management Strategy)
2) Git Flow๋ฅผ ์ฌ์ฉํ๋ ์ด์
- ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ์๊ฑฐ๋ ํผ์์ ๊ฐ๋ฐ์ ํ๋ ๊ฒฝ์ฐ์๋ ๊ตณ์ด ๋ธ๋์น๋ฅผ ๋ง๋ค ํ์ ์์ด Main ๋ธ๋์น์์ ์์ ํด๋ ์๊ด์ด ์๋ค.
- ๋ค๋ง ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ์ปค์ง๊ฑฐ๋ ํ ๋จ์๋ก ๊ฐ๋ฐ์ด ์ด๋ฃจ์ด์ง๋ ์ํฉ์์ ๋ณ๋์ ๋ธ๋์น ๊ด๋ฆฌ ์ ๋ต ์์ด ๊ฐ๋ฐ์ ์งํํ๊ฒ ๋๋ฉด ๋ฌด๋ถ๋ณํ๊ฒ ๋ธ๋์น๋ฅผ ์์ฑํ๊ฒ ๋์ด ์ฆ์ ์ถฉ๋๋ก ์ธํด ์์ฐ์ฑ์ด ๋จ์ด์ง๊ฒ ๋๊ณ ํ์ ์ด ์ํํ์ง ์๊ฒ ๋๋ค.
- ์ฆ, Git Flow๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ Git์ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ์ฌ ํ๋ก์ ํธ ๊ด๋ฆฌ์ ํ์ ์ ๊ฐ์ ํ๊ณ ํ์ ์์ฐ์ฑ์ ๋์ด๋ฉฐ ์ํํธ ์จ์ด ํ์ง์ ํฅ์์ํค๊ธฐ ์ํด์์ด๋ค.
3) Branch ์ข ๋ฅ in Git Flow
(1) Main Branch
- ์ ํ์ผ๋ก ์ถ์๋ ์ ์๋ ๋ธ๋์น
(2) Develop Branch
- ๋ค์ ์ถ์ ๋ฒ์ ์ ๊ฐ๋ฐํ๋ ๋ธ๋์น
- ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ํ ๋ธ๋์น (feature Branch)๋ค์ ๋ณํฉํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
- ์ฆ, ๋ชจ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋๊ณ ๋ฒ๊ทธ๊ฐ ์์ ๋์ด ๋ฐฐํฌ ๊ฐ๋ฅํ ์์ ์ ์ธ ์ฌํ๋ผ๋ฉด develop ๋ธ๋์น๋ฅผ Main ๋ธ๋์น์ merge(๋ณํฉ)ํ๋ค.
- ํ์์๋ ์ด ๋ธ๋์น๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐ์ ์งํํ๋ค.
(3) Supporting Branch
- ํ์์ ์์ฃผ ์ฌ์ฉํ๋ ๋ธ๋์น๋ก ํ ๊ตฌ์ฑ์ ๊ฐ์ ํํ ๊ฐ๋ฐ์ ํ๊ฒ ํ๊ณ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ์ถ์ ํ ์ ์๋ค.
- ์ด supporting ๋ธ๋์น๋ค์ ๋ฉ์ธ ๋ธ๋์น์๋ ๋ฌ๋ฆฌ ๊ฒฐ๊ตญ ์ ๊ฑฐ๋ ๊ฒ์ด๋ฏ๋ก ํญ์ ์ ํ๋ ์๋ช ์ ๊ฐ๋๋ค.
โ release branch
- ์ด๋ฒ ์ถ์ ๋ฒ์ ์ ๋ฐฐํฌํ๊ธฐ ์ํ ์ ์ฉ ๋ธ๋์น๋ก ๋ฐฐํฌ๋ฅผ ์ํ ์ต์ข ์ ์ธ ๋ฒ๊ทธ ์์ , ํ ์คํธ, ๋ฌธ์ ์ถ๊ฐ ๋ฑ ๋ฐฐํฌ์ ์ง์ ์ ์ผ๋ก ๊ด๋ จ๋ ์์ ์ ์ํํ๋ค.
- ์ด๋ฌํ ์์ ๋ค ์ด์ธ์ release ๋ธ๋์น์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐ๋ก merge ํ์ง ์๋๋ค.
โก feature branch
- ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋ ๋ธ๋์น๋ก, ์๋ก์ด ๊ธฐ๋ฅ ๊ฐ๋ฐ ๋ฐ ๋ฒ๊ทธ ์์ ์ด ํ์ํ ๋๋ง๋ค develop ๋ธ๋์น๋ก๋ถํฐ ๋ถ๊ธฐํ๋ค.
- (์ค์!) feature ๋ธ๋์น์์์ ์์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ณต์ ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์์ ์ ๋ก์ปฌ ์ ์ฅ์์์ ๊ด๋ฆฌํ๋ฉฐ, ๊ฐ๋ฐ์ด ์๋ฃ๋๋ฉด develop ๋ธ๋์น์ merge ํ์ฌ ๋ค๋ฅธ ์ฌ๋๋ค๊ณผ ๊ณต์ ํ๋ค.
[์์]
- develop ๋ธ๋์น์์ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ํ feature ๋์น๋ฅผ ๋ถ๊ธฐํ๋ค.
- ์๋ก์ด ๊ธฐ๋ฅ์ ๋ํ ์์ ์ ์ํํ๋ค.
- ์์ ์ด ๋๋๋ฉด develop ๋ธ๋์น๋ก mergeํ๋ค.
- ๋ ์ด์ ํ์ํ์ง ์์ feature ๋ธ๋์น๋ ์ญ์ ํ๋ค. → ๋ง์ ์ค๊ธฐ (branch)๋ ์์ ์ ํผ๋์ ์ค ์ ์๋ค.
- ์๋ก์ด ๊ธฐ๋ฅ์ ๋ํ feature ๋ธ๋์น๋ฅผ ์ค์ ์๊ฒฉ ์ ์ฅ์์ ์ฌ๋ฆฐ๋ค.
โข hotfix branch
- ์ถ์ ๋ฒ์ ์์ ๋ฐ์ํ ๋ฒ๊ทธ๋ฅผ ์์ ํ๋ ๋ธ๋์น๋ก, ๋ฐฐํฌํ ๋ฒ์ ์ ๊ธด๊ธํ๊ฒ ์์ ์ ํด์ผ ํ ํ์๊ฐ ์์ ๊ฒฝ์ฐ, mainn ๋ธ๋์น์์ ๋ถ๊ธฐํ๋ค.
- develop ๋ธ๋์น์์ ๋ฌธ์ ๊ฐ ๋๋ ๋ถ๋ถ์ ์์ ํ์ฌ ๋ฐฐํฌ ๊ฐ๋ฅํ ๋ฒ์ ์ ๋ง๋ค๊ธฐ์๋ ์๊ฐ๋ ๋ง์ด ์์๋๊ณ ์์ ์ฑ์ ๋ณด์ฅํ๊ธฐ๋ ์ด๋ ค์ฐ๋ฏ๋ก ๋ฐ๋ก ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ main ๋ธ๋์น์์ ์ง์ ๋ธ๋์น๋ฅผ ๋ง๋ค์ด ํ์ํ ๋ถ๋ถ๋ง ์์ ํ ํ, ๋ค์ main ๋ธ๋์น์ ๋ณํฉํ์ฌ ์ด๋ฅผ ๋ฐฐํฌํ๋ค.
[์์]
- ๋ฐฐํฌํ ๋ฒ์ ์ ๊ธด๊ธํ๊ฒ ์์ ํ ๋ถ๋ถ ๋ฐ์ → Main ๋ธ๋์น์์ hotfix ๋ธ๋์น ๋ถ๊ธฐ
- ๋ฌธ์ ๊ฐ ๋๋ ๋ถ๋ถ ์์ ํ Main ๋ธ๋์น์ mergeํ๊ณ ๋ฐฐํฌ
- hotfix ๋ธ๋์น์์์ ๋ณ๊ฒฝ ์ฌํญ์ develop๋ธ๋์น์๋ mergeํ๋ค.
4) Branch ๋ค์ด๋ฐ ๊ท์น
(1) main branch, develop branch
- master์ develop ๋ธ๋์น๋ ๋ณธ๋ ์ด๋ฆ ๊ทธ๋๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์ผ๋ฐ์ ์ด๋ค.
(2) feature branch
- ๋ณดํต "feature/๊ธฐ๋ฅ ์์ฝ" ํ์์ผ๋ก ์ฌ์ฉํ๋ค. ex) feature/login
- feature/{issue-number}-{feature-name} ์ด์์ถ์ ์ ์ฌ์ฉํ๋ค๋ฉด ์ด์ ๊ฐ์ ํ์์ ๋ฐ๋ฅธ๋ค.
(3) release branch
- "release-๋ฒ์ ๋ช " ํ์์ ์ฃผ๋ก ์ฌ์ฉํ๋ค. ex) release-0.0.1
(4) hotfix branch
- "hotfix-์ด์ ๋ฒ์ " ํ์์ ์ฃผ๋ก ์ฌ์ฉํ๋ค. ex) hotfix-1.2.1
[Reference]
๋ฐ์ํ
'๐ ์ฐ์ฌ ์๋ฆฌ์ฆ > ์ฃผ๋์ด ๊ฐ๋ฐ์๊ฐ ์๋ฉด ์ข์ ๋ด์ฉ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐ์ดํฐ ์ง๋ ฌํ, ์ญ์ง๋ ฌํ์ ๋ํด ์์ ๋ณด์! (0) | 2024.03.25 |
---|---|
[1/31] ๊น์ํ๋ ์จ๋ผ์ธ ๋ฐ์ - Q&A ์ ๋ฆฌ (2) | 2024.02.13 |
VSCode ์ ์ฉํ Extension ๋ชจ์ (์ ๋ฆฌ์ค) (0) | 2023.07.30 |
Git ์์ฃผ ์ฐ์ด๋ ๋ช ๋ น์ด ๋ชจ์ (0) | 2023.07.28 |
๋ฉํฐ ์ค๋ ๋ - ์์์ฑ (Atomicity) (0) | 2023.05.03 |