728x90
๋ฐ์ํ
์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ํ๋์ ์ ์ฅ์์ ์์ ํ ๋, ๋ณด๋ค ํจ๊ณผ์ ์ผ๋ก ํ์ ํ๊ธฐ ์ํด git branch ์ ๋ํ ๊ท์น์ ์ ํ๊ณ ์ ์ฅ์๋ฅผ ์ ํ์ฉํ๊ธฐ ์ํ workflow ๋ฅผ ์ ์ํ๋ ๊ฒ์ ๋ฐ๋ก git branch ์ ๋ต์ด๋ผ๊ณ ํ๋ค.
๊ฐ๋ฐ์ ํ ๋, ์ถ๊ฐ๋ ๊ธฐ๋ฅ์ด๋ ์์ ์ฌํญ์ด ์๋ก ์ํฅ์ ์ฃผ์ง ์๊ณ , ๋ ๋ฆฝ์ ์ผ๋ก ๋์์ ์งํํ ์ ์๋๋ก ํ๋ค. ๋ํ, ๊ฐ ๋ธ๋์น๊ฐ ํน์ ์์ ์ ์งํํ๊ณ , ํ์ํ ๊ฒฝ์ฐ ํด๋น ์์ ๋จ์์ Rollback์ด ๊ฐ๋ฅํ๊ธฐ์ ํ๋ก์ ํธ ๊ด๋ฆฌ์ ์ ์ฐ์ฑ์ ํฅ์์ํฌ ์ ์๋ค.
์ด๋ฌํ ์ ๋ต์ ์ํ๋ ๋ฒ์ ๋จ์๋ก ๊ด๋ฆฌํ ์ ์๋๋ก ํ์ฌ ํ๋ก์ ํธ์ ๊ด๋ฆฌ์ ๋ฐฐํฌ์ ์์ ์ฑ์ ๋์ฌ์ค๋ค.
Branch ์ ๋ต์ ๋ค์๊ณผ ๊ฐ์ 3๊ฐ์ง๊ฐ ์๋ค.
1๏ธโฃ Git flow
2๏ธโฃ Github Flow
3๏ธโฃ Gitlab flow
1๏ธโฃ Git flow
๋ธ๋์น ์ข ๋ฅ
- master: ์ ํ ์ถ์ ๋ฒ์ ์ ๊ด๋ฆฌํ๋ ๋ฉ์ธ ๋ธ๋์น
- develop: ๋ค์ ์ถ์ ๋ฒ์ ์ ์ํด ๊ฐ๋ฐํ๋ ๋ธ๋์น
- feature: ์๋ก์ด ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋ ๋ธ๋์น
- release: ๋ค์ ์ถ์ ๋ฒ์ ์ ์ค๋นํ๋ ๋ธ๋์น
- hotfix: ์ถ์๋ ์ ํ์ ๋ฒ๊ทธ๋ฅผ ๊ณ ์น๊ธฐ ์ํ ๋ธ๋์น
Git Flow๋ฅผ ํ์ฉํ ๊ฐ๋ฐ ์งํ ํ๋ฆ
- ์ ๊ท ๊ธฐ๋ฅ ๊ฐ๋ฐ์ develop ๋ธ๋์น๋ฅผ ๊ธฐ์ค์ผ๋ก ํ feature ๋ธ๋์น๋ฅผ ๋ฐ์ ์์
- ์์
์ด ์๋ฃ๋ feature ๋ธ๋์น๋ develop ๋ธ๋์น๋ก ๋ณํฉ.
- PR์ ํตํด ๋ฆฌ๋ทฐ ํ ๋ณํฉํ๋ ๋ฐฉ์
- ๋ฐฐํฌ๋ฅผ ์ํ ์ค๋น๋ ๋ค์ ์ถ์ ๋ฒ์ ์ ์ํด ๊ฐ๋ฐ์ค์ธ develop ๋ธ๋์น์์ release ๋ธ๋์น๋ฅผ ๋ฐ์ ํ๋ค.
- ๋ง์ฝ, ํด๋น ๊ณผ์ ์์ ๋ฒ๊ทธ๊ฐ ๋ฐ๊ฒฌ๋๋ค๋ฉด, release ๋ธ๋์น์์ ๋ฐ๋ก ๋ฐ์
- ํ ์คํธ ํ, ์ผ์ ์ฃผ๊ธฐ๋ก master ๋ธ๋์น๋ก ๋ณํฉํ์ฌ ์ ํ ์ถ์
- ๋ฐฐํฌ ์ดํ, release ๋ธ๋์น์์ ๋ฐ๊ฒฌ๋์ง ๋ชปํ ์๋ก์ด ๋ฒ๊ทธ๋ main ๋ธ๋์น์์ hotfix ๋ธ๋์น๋ฅผ ํ ํ, hotfix ๋ธ๋์น์์ ๋ฐ๋ก ๊ณ ์น ํ main์ผ๋ก ๋ณํฉ
- hotfix ๋ธ๋์น์์ ๊ณ ์น๊ณ , main ๋ธ๋์น์ ๋ณํฉ ๋์๋ค๋ฉด, ์ด๋ฅผ develop ๋ธ๋์น์๋ ๋ณํฉ
ํน์ง
- release์ hotfix ๋ธ๋์น๋ฅผ ํตํด ๋ช ํํ ๋ฐฐํฌ ์ ์ฐจ๋ฅผ ๊ฐ์ถ๊ณ ์๋ค.
- ๋ค์ํ ์ข ๋ฅ์ ๋ธ๋์น๋ฅผ ์ฌ์ฉํ๋ค.
- ๋ณต์กํ ํ๋ก์ ํธ๋ ๋๊ท๋ชจ ํ์์ ์ฌ์ฉํ๊ธฐ ์ ํฉํ๋ค.
- ๋ณต์ก์ฑ๊ณผ Control์ ๊ฐ์ง๊ณ ์์ด ํน์ ๊ธฐ๋ฅ์ด๋ ์์ ์ ๋น ๋ฅด๊ฒ ๋ฐฐํฌํด์ผ ํ ๊ฒฝ์ฐ ๋ฑ์์ ์ ์ฐ์ฑ์ด ๋จ์ด์ง.
2๏ธโฃ Github Flow
๋ธ๋์น ์ข ๋ฅ
- master : base๊ฐ ๋๋ ๋ธ๋์น
- feature : master์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ธฐ ์ํ ์๋ก์ด ๋ธ๋์น
Github Flow๋ฅผ ํ์ฉํ ๊ฐ๋ฐ ์งํ ํ๋ฆ
- master ๋ธ๋์น๋ ๋ฐฐํฌ๋ฅผ ์ํ ์์ค์ฝ๋๋ฅผ ๊ด๋ฆฌํ๋ ๋ธ๋์น.
- ๋ง์ฝ, ์ ๊ท ๊ธฐ๋ฅ ๊ฐ๋ฐ์ด ํ์ํ๋ค๋ฉด, master ๋ธ๋์น๋ก๋ถํฐ feature ๋ธ๋์น๋ก ์๋ก ๋ฐ์ ์์ ์ ์งํํ๋ค.
- Task๊ฐ ์๋ฃ๋๋ฉด, Pull Request๋ฅผ ์์ฑํ์ฌ Review๋ฅผ ์์ฒญํ๊ณ , PR์ feature → master ๋ธ๋์น์ด๋ค.
- ๋ฆฌ๋ทฐ ์๋ฃ ํ, ํผ๋๋ฐฑ์ด ๋ชจ๋ ๋ฐ์๋์๋ค๋ฉด, ํด๋น feature ๋ธ๋์น๋ฅผ master ๋ธ๋์น๋ก ๋ณํฉํ๋ค.
ํน์ง
- ๋จ์ํ๋ฉฐ ์ง์์ ์ธ ๋ฐฐํฌ๋ฅผ ๊ฐ์กฐํ๋ฉฐ, master ๋ธ๋์น์์ ๋ฐฐํฌ๋ฅผ ์ํํ๋ค.
- ๋จ์ํ๋ฉฐ ๋น ๋ฅธ ๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ํด ์ฌ์ฉ๋๋ค.
- ํ ์คํธ์ ๊ฒ์ฆ ์ ์ฐจ๋ฅผ ๊ฑฐ์น์ง ์๊ณ ๋ฐ๋ก master ๋ธ๋์น๋ก Merge ๋๋ฏ๋ก ์ํ์ฑ์ด ์๋ค.
3๏ธโฃ Gitlab flow
๋ณต์กํ Git Flow์ ๋๋ฌด ๊ฐ๋จํ Github Flow์ ์ ์ถฉ์
๋ธ๋์น ์ข ๋ฅ
- master : ์์ ์ ์ธ ์ฝ๋๊ฐ ์ ์ฅ๋๋ ๋ธ๋์น๋ก base๊ฐ ๋๋ ๋ธ๋์น.
- ์ ์ฒด์ ์ธ ํ ์คํธ ์งํ์ด ์๋ฃ๋์ด ๊ธฐ๋ฅ์ ๋ํ ๋ณด์ฅ์ด ์๋ค๋ฉด, production ๋ธ๋์น๋ก ๋จธ์ง.
- ๋ง์ฝ staging ๋จ๊ณ๊ฐ ํ์ํ๋ค๋ฉด, pre-production ๋ธ๋์น๋ก ๋จธ์ง.
- feature : ๊ฐ ๊ธฐ๋ฅ์ด ๊ฐ๋ฐ๋๋ ๋ธ๋์น.
- master ๋ธ๋์น์์ ํ์๋๊ณ PR์ ํตํด ๋ค์ ๋ณํฉ๋๋ค.
- Production : ํ ์คํธ๊ฐ ๋๋ ๊ธฐ๋ฅ์ ๋ฐฐํฌ๋ฅผ ์ํ ๋ธ๋์น
- Pre-Production : ๋ฐฐํฌ ์ ์ ์ ํ์ ํ
์คํธ (QA, ํ์ง๊ฒ์ฌ) ํ๋ ๋ธ๋์น
- ํ ์คํธ๊ฐ ์ ์์ ์ผ๋ก ์๋ฃ๋๋ฉด, production ๊ณผ master ์ ๊ฐ๊ฐ PR(Pull Request)์ ๋ณด๋ธ๋ค.
Gitlab Flow๋ฅผ ํ์ฉํ ๊ฐ๋ฐ ์งํ ํ๋ฆ
- ๊ธฐ๋ฅ ๊ฐ๋ฐ์ด ํ์ํ ๊ฒฝ์ฐ, master ๋ธ๋์น์์ feature ๋ธ๋์น๋ฅผ ์์ฑํ๋ค.
- feature ๋ธ๋์น์์ ๊ธฐ๋ฅ ๊ฐ๋ฐ ์๋ฃ ํ, PR์ ํตํด
- ๊ธฐ๋ฅ์ ๋ํ ๊ฒ์ฆ ๋ฐ ๋ณด์ฅ์ด ์๋ค๋ฉด production ๋ธ๋์น๋ก ๋จธ์งํ๋ค.
- ๊ธฐ๋ฅ์ ๋ํ ๊ฒ์ฆ ๋ฐ ๋ณด์ฅ์ด ํ์ํ๋ค๋ฉด, pre-production ๋ธ๋์น๋ก ๋จธ์งํ๋ค.
- pre-production ๋ธ๋์น์์ ํ ์คํธ๊ฐ ์๋ฃ ๋์๋ค๋ฉด, production๊ณผ master์ PR์ ํตํด ๋ณํฉํ๋ค.
ํน์ง
- ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ธ ํ๋ก์ฐ๋ฅผ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋ง๋ ๋ค.
- GitLab์ ๋ด์ฅ๋ CI/CD ํ์ดํ๋ผ์ธ์ ์ ๊ณตํ๋ฏ๋ก ๋น๋, ํ
์คํธ, ๋ฐฐํฌ ๋ฑ์ ์๋ํํ ์ ์๋ค.
- ์ด๋ฅผ ํตํด ์์ ์ ์ธ ๋ฐฐํฌ์ ๋น ๋ฅธ ํผ๋๋ฐฑ์ ์ป์ ์ ์์ต๋๋ค.
- ๋น๊ต์ ๊ฐ๋จํ ํ๋ก์ธ์ค๋ฅผ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์, ๋๊ท๋ชจ ํ๋ก์ ํธ์์๋ ํ์ ๊ณผ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์ธ ์ ์๋ค.
- ํนํ ์ง์์ ์ธ ๋ฐฐํฌ๊ฐ ๊ฐ์กฐ๋๋ ํ๊ฒฝ์์ ํจ๊ณผ์ ์ด๋ค.
728x90
๋ฐ์ํ
'๐โโฌ git' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
git history ์ญ์ ํ๊ธฐ (0) | 2022.10.04 |
---|---|
git merge ์๋ฌ (0) | 2022.07.06 |