ํ๋ก ํธ์๋ ๊ฐ๋ฐํ์ ์ํ ํจ๊ณผ์ ์ธ Git ์ํฌํ๋ก์ฐ ์ ๋ต์ ์์๋ณด์ธ์. ์ฑ๊ณต์ ์ธ ํ์ ์ ์ํ ๋ธ๋์นญ ๋ชจ๋ธ, ๋ชจ๋ฒ ์ฌ๋ก ๋ฐ ํ์ ๋ฐฐ์ธ ์ ์์ต๋๋ค.
ํ๋ก ํธ์๋ ๋ฒ์ ๊ด๋ฆฌ: ํ์ ์ํ Git ์ํฌํ๋ก์ฐ ์ ๋ต
๊ธ๋ณํ๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์ธ๊ณ์์ ํจ๊ณผ์ ์ธ ๋ฒ์ ๊ด๋ฆฌ๋ ์ฝ๋๋ฅผ ๊ด๋ฆฌํ๊ณ , ํ์๊ณผ ํ์ ํ๋ฉฐ, ํ๋ก์ ํธ์ ์์ ์ฑ์ ๋ณด์ฅํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๋ถ์ฐ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ธ Git์ ์ ๊ณ ํ์ค์ด ๋์์ต๋๋ค. ํ์ง๋ง ๋จ์ํ Git์ ์ฌ์ฉํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ผ๋ฉฐ, ๊ทธ ์ด์ ์ ๊ทน๋ํํ๊ธฐ ์ํด์๋ ์ ์ ์๋ Git ์ํฌํ๋ก์ฐ ์ ๋ต์ ์ฑํํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค.
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์ Git ์ํฌํ๋ก์ฐ๊ฐ ์ค์ํ ์ด์ ๋ ๋ฌด์์ผ๊น์?
ํ๋ก ํธ์๋ ํ๋ก์ ํธ๋ ์ข ์ข ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ๋์์ ๋ค๋ฅธ ๊ธฐ๋ฅ์ด๋ ๋ฒ๊ทธ ์์ ์์ ์ ํฉ๋๋ค. ๋ช ํํ ์ํฌํ๋ก์ฐ๊ฐ ์์ผ๋ฉด ์ถฉ๋์ด ๋ฐ์ํ๊ณ ์ฝ๋ ํ์ง์ด ์ ํ๋ ์ ์์ผ๋ฉฐ ๊ฐ๋ฐ ํ๋ก์ธ์ค๊ฐ ํผ๋์ค๋ฌ์์ง ์ ์์ต๋๋ค. ๊ฒฌ๊ณ ํ Git ์ํฌํ๋ก์ฐ๋ ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ์ด์ ์ ์ ๊ณตํฉ๋๋ค:
- ํ์ ๊ฐ์ : ์ ์ ์๋ ์ํฌํ๋ก์ฐ๋ ๋ธ๋์นญ, ๋ณํฉ, ์ฝ๋ ๋ฆฌ๋ทฐ์ ๋ํ ๋ช ํํ ๊ฐ์ด๋๋ผ์ธ์ ์ค์ ํ์ฌ ํ์ ์ ๊ฐ์ํํฉ๋๋ค.
- ์ฝ๋ ํ์ง ํฅ์: ์ํฌํ๋ก์ฐ ๋ด์ ์ฝ๋ ๋ฆฌ๋ทฐ ํ๋ก์ธ์ค๋ฅผ ํตํฉํ๋ฉด ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ์ฌ ๋ ๋์ ํ์ง์ ์ฝ๋๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
- ๊ฐ์ํ๋ ๋ฒ๊ทธ ์์ : ๋ธ๋์นญ ์ ๋ต์ ํตํด ์ฃผ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ฐฉํดํ์ง ์๊ณ ๊ฒฉ๋ฆฌ๋ ๋ฒ๊ทธ ์์ ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ํจ์จ์ ์ธ ๊ธฐ๋ฅ ๊ฐ๋ฐ: ํผ์ฒ ๋ธ๋์น๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๊ฐ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ ๋ฆฝ์ ์ผ๋ก ์์ ํ ์ ์์ด ์ฃผ ๋ธ๋์น์ ๋ฒ๊ทธ๊ฐ ์ ์ ๋ ์ํ์ ์ต์ํํฉ๋๋ค.
- ์ฉ์ดํ ๋กค๋ฐฑ: Git์ ๋ฒ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ ๋๋ถ์ ํ์ํ ๊ฒฝ์ฐ ์ด์ ๋ฒ์ ์ ์ฝ๋๋ก ์ฝ๊ฒ ๋๋๋ฆด ์ ์์ด ์ค๋ฅ์ ์ํฅ์ ์ํํ ์ ์์ต๋๋ค.
- ๊ฐ์ํ๋ ๋ฐฐํฌ: ๋ช ํํ ์ํฌํ๋ก์ฐ๋ ์๋ํ๋ ๋ฐฐํฌ๋ฅผ ์ฉ์ดํ๊ฒ ํ์ฌ ํญ์ ์ต์ ์์ ๋ฒ์ ์ ์ฝ๋๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
์ผ๋ฐ์ ์ธ Git ์ํฌํ๋ก์ฐ ์ ๋ต
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์๋ ์ฌ๋ฌ Git ์ํฌํ๋ก์ฐ ์ ๋ต์ด ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๊ฐ ์ ๋ต์ ๊ณ ์ ํ ์ฅ๋จ์ ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ต์์ ์ ํ์ ํ๋ก์ ํธ์ ํ์ ํน์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
1. ํผ์ฒ ๋ธ๋์น ์ํฌํ๋ก์ฐ
ํผ์ฒ ๋ธ๋์น ์ํฌํ๋ก์ฐ๋ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ์ ๋ต ์ค ํ๋์ ๋๋ค. ๊ฐ ๊ธฐ๋ฅ์ด๋ ๋ฒ๊ทธ ์์ ์ ๋ํด ์ ๋ธ๋์น๋ฅผ ๋ง๋๋ ๊ฒ์ ์ค์ฌ์ผ๋ก ์งํ๋ฉ๋๋ค. ์ด๋ฌํ ๊ฒฉ๋ฆฌ๋ ๊ธฐ๋ฅ ์์ ์ด ํตํฉ ์ค๋น๊ฐ ๋ ๋๊น์ง `main`(๋๋ `master`) ๋ธ๋์น์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
๋จ๊ณ:
- ๊ฐ๊ฐ์ ์๋ก์ด ๊ธฐ๋ฅ์ด๋ ๋ฒ๊ทธ ์์ ์ ๋ํด `main`(๋๋ `master`)์์ ์ ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค(์: `feature/add-user-authentication`, `bugfix/resolve-css-issue`).
- ํผ์ฒ ๋ธ๋์น์์ ์ฝ๋๋ฅผ ๊ฐ๋ฐํ๊ณ ํ ์คํธํฉ๋๋ค.
- ํผ์ฒ ๋ธ๋์น์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ๊ธฐ์ ์ผ๋ก ์ปค๋ฐํฉ๋๋ค.
- ๊ธฐ๋ฅ์ด ์๋ฃ๋๊ณ ํ ์คํธ๋๋ฉด ํผ์ฒ ๋ธ๋์น๋ฅผ `main`์ ๋ณํฉํ๊ธฐ ์ํ ํ ๋ฆฌํ์คํธ(PR)๋ฅผ ์์ฑํฉ๋๋ค.
- ํ ๋ฆฌํ์คํธ์ ๋ํด ์ฝ๋ ๋ฆฌ๋ทฐ๊ฐ ์ํ๋ฉ๋๋ค.
- ์ฝ๋ ๋ฆฌ๋ทฐ๊ฐ ์น์ธ๋๋ฉด ํผ์ฒ ๋ธ๋์น๊ฐ `main`์ ๋ณํฉ๋ฉ๋๋ค.
- ๊ทธ ํ ํผ์ฒ ๋ธ๋์น๋ ์ญ์ ๋ฉ๋๋ค.
์ฅ์ :
- ๊ฒฉ๋ฆฌ: ์ฃผ ์ฝ๋๋ฒ ์ด์ค์์ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ๊ฒฉ๋ฆฌํฉ๋๋ค.
- ์ฝ๋ ๋ฆฌ๋ทฐ: ํตํฉ ์ ์ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๊ฐ์ ํฉ๋๋ค.
- ๋ณ๋ ฌ ๊ฐ๋ฐ: ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ๋์์ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ๋ํด ์์ ํ ์ ์๋๋ก ํฉ๋๋ค.
๊ณ ๋ ค์ฌํญ:
- ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ฉด ๋ธ๋์น๊ฐ ์ค๋ ์ ์ง๋ ์ ์์ต๋๋ค.
- ํ ๋ฆฌํ์คํธ๋ฅผ ์ ์คํ๊ฒ ๊ด๋ฆฌํด์ผ ํฉ๋๋ค.
- ๋ธ๋์น๊ฐ `main`์์ ํฌ๊ฒ ๊ฐ๋ผ์ง๋ฉด ๋ณํฉ ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
์์:
ํ ํ์ด ์ด์ปค๋จธ์ค ์น์ฌ์ดํธ๋ฅผ ๊ฐ๋ฐํ๊ณ ์๋ค๊ณ ์์ํด ๋ณด์ธ์. ํ ๊ฐ๋ฐ์์๊ฒ ์๋ก์ด ์ ํ ํํฐ๋ง ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ์์ ์ด ํ ๋น๋ฉ๋๋ค. ๊ทธ ๊ฐ๋ฐ์๋ `main`์์ `feature/product-filtering`์ด๋ผ๋ ๋ธ๋์น๋ฅผ ์์ฑํ๊ณ , ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ค์, ์ฝ๋ ๋ฆฌ๋ทฐ ํ `main`์ผ๋ก ๋ค์ ๋ณํฉํ๊ธฐ ์ํ ํ ๋ฆฌํ์คํธ๋ฅผ ์์ฑํฉ๋๋ค.
2. ๊นํ๋ก์ฐ ์ํฌํ๋ก์ฐ
๊นํ๋ก์ฐ๋ ๋ค์ํ ๋ชฉ์ ์ ์ํด ํน์ ๋ธ๋์น๋ฅผ ์ ์ํ๋ ๋ ์ ๊ตํ ์ํฌํ๋ก์ฐ์ ๋๋ค. ๊ธฐ๋ฅ ํตํฉ ๋ธ๋์น ์ญํ ์ ํ๋ `develop` ๋ธ๋์น์ ๋ฆด๋ฆฌ์ค ์ค๋น๋ฅผ ์ํ ๋ฆด๋ฆฌ์ค ๋ธ๋์น๋ฅผ ๋์ ํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ ๊ธฐ์ ์ธ ๋ฆด๋ฆฌ์ค ์ผ์ ์ด ์๊ณ ์๊ฒฉํ ๋ฒ์ ๊ด๋ฆฌ๊ฐ ํ์ํ ํ๋ก์ ํธ์ ์ ์ฉํฉ๋๋ค.
๋ธ๋์น:
- `main` (๋๋ `master`): ํ๋ก๋์ ์ค๋น๊ฐ ๋ ์ฝ๋๋ฅผ ๋ํ๋ ๋๋ค.
- `develop`: ๊ธฐ๋ฅ ํตํฉ ๋ธ๋์น ์ญํ ์ ํฉ๋๋ค.
- `feature/*`: `develop`์์ ๋ถ๊ธฐ๋ ์๋ก์ด ๊ธฐ๋ฅ ๊ฐ๋ฐ์ฉ ๋ธ๋์น์ ๋๋ค.
- `release/*`: `develop`์์ ๋ถ๊ธฐ๋ ๋ฆด๋ฆฌ์ค ์ค๋น์ฉ ๋ธ๋์น์ ๋๋ค.
- `hotfix/*`: `main`์์ ๋ถ๊ธฐ๋ ํ๋ก๋์ ์ ์น๋ช ์ ์ธ ๋ฒ๊ทธ ํด๊ฒฐ์ฉ ๋ธ๋์น์ ๋๋ค.
๋จ๊ณ:
- ์๋ก์ด ๊ธฐ๋ฅ์ `develop`์์ ๋ถ๊ธฐ๋ `feature/*` ๋ธ๋์น์์ ๊ฐ๋ฐ๋ฉ๋๋ค.
- ๊ธฐ๋ฅ์ด ์๋ฃ๋๋ฉด `develop` ๋ธ๋์น์ ๋ณํฉ๋ฉ๋๋ค.
- ๋ฆด๋ฆฌ์ค๋ฅผ ์ค๋นํ ๋๊ฐ ๋๋ฉด `develop`์์ `release/*` ๋ธ๋์น๊ฐ ์์ฑ๋ฉ๋๋ค.
- `release/*` ๋ธ๋์น๋ ์ต์ข ํ ์คํธ ๋ฐ ๋ฒ๊ทธ ์์ ์ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋ฆด๋ฆฌ์ค๊ฐ ์ค๋น๋๋ฉด `main`๊ณผ `develop` ๋ธ๋์น ๋ชจ๋์ ๋ณํฉ๋ฉ๋๋ค.
- `main` ๋ธ๋์น์๋ ๋ฆด๋ฆฌ์ค ๋ฒ์ ์ผ๋ก ํ๊ทธ๊ฐ ์ง์ ๋ฉ๋๋ค.
- ํ๋ก๋์ ์์ ์น๋ช ์ ์ธ ๋ฒ๊ทธ๊ฐ ๋ฐ๊ฒฌ๋๋ฉด `main`์์ `hotfix/*` ๋ธ๋์น๊ฐ ์์ฑ๋ฉ๋๋ค.
- ๋ฒ๊ทธ๋ `hotfix/*` ๋ธ๋์น์์ ์์ ๋๊ณ , ๋ณ๊ฒฝ ์ฌํญ์ `main`๊ณผ `develop` ๋ชจ๋์ ๋ณํฉ๋ฉ๋๋ค.
์ฅ์ :
- ์ฒด๊ณ์ ์ธ ๋ฆด๋ฆฌ์ค: ๋ฆด๋ฆฌ์ค ๊ด๋ฆฌ๋ฅผ ์ํ ๋ช ํํ ํ๋ก์ธ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ํซํฝ์ค ๊ด๋ฆฌ: ํ๋ก๋์ ๋ฌธ์ ์ ๋ํ ์ ์ํ ์์ ์ ํ์ฉํฉ๋๋ค.
- ๋ณ๋ ฌ ๊ฐ๋ฐ: ์ฌ๋ฌ ๊ธฐ๋ฅ์ ๋ณ๋ ฌ ๊ฐ๋ฐ์ ์ง์ํฉ๋๋ค.
๊ณ ๋ ค์ฌํญ:
- ํผ์ฒ ๋ธ๋์น ์ํฌํ๋ก์ฐ๋ณด๋ค ๋ณต์กํฉ๋๋ค.
- ์๊ท๋ชจ ํ๋ก์ ํธ์๋ ๊ณผํ ์ ์์ต๋๋ค.
- ์ ์คํ ๋ธ๋์น ๊ด๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
์์:
ํ ์ํํธ์จ์ด ํ์ฌ๊ฐ ๋ถ๊ธฐ๋ง๋ค ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฒ์ ์ ์ถ์ํฉ๋๋ค. ์ด๋ค์ ๊นํ๋ก์ฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ๊ธฐ๋ฅ ๊ฐ๋ฐ์ `feature/*` ๋ธ๋์น์์ ์ด๋ฃจ์ด์ง๋ฉฐ, ์ดํ `develop` ๋ธ๋์น๋ก ํตํฉ๋ฉ๋๋ค. 1.0 ๋ฆด๋ฆฌ์ค๋ฅผ ์ค๋นํ๊ธฐ ์ํด `develop`์์ `release/1.0` ๋ธ๋์น๊ฐ ์์ฑ๋ฉ๋๋ค. ํ ์คํธ์ ๋ฒ๊ทธ ์์ ํ, `release/1.0` ๋ธ๋์น๋ `main`์ ๋ณํฉ๋๊ณ `v1.0`์ผ๋ก ํ๊ทธ๊ฐ ์ง์ ๋ฉ๋๋ค. ๋ฆด๋ฆฌ์ค ํ ํ๋ก๋์ ์์ ์น๋ช ์ ์ธ ๋ฒ๊ทธ๊ฐ ๋ฐ๊ฒฌ๋๋ฉด `main`์์ `hotfix/critical-bug` ๋ธ๋์น๊ฐ ์์ฑ๋๊ณ , ๋ฒ๊ทธ๊ฐ ์์ ๋ ํ ๋ณ๊ฒฝ ์ฌํญ์ `main`๊ณผ `develop` ๋ชจ๋์ ๋ณํฉ๋ฉ๋๋ค.
3. ํธ๋ ํฌ ๊ธฐ๋ฐ ๊ฐ๋ฐ
ํธ๋ ํฌ ๊ธฐ๋ฐ ๊ฐ๋ฐ(Trunk-Based Development, TBD)์ ๋จ์ผ `trunk`(์ผ๋ฐ์ ์ผ๋ก `main` ๋๋ `master`) ๋ธ๋์น๋ก ์ฝ๋๋ฅผ ์์ฃผ ํตํฉํ๋ ๊ฒ์ ๊ฐ์กฐํ๋ ๋ ๊ฐ๋จํ ์ํฌํ๋ก์ฐ์ ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ๋์ ์์ค์ ๊ท์จ๊ณผ ์๋ํ๋ ํ ์คํธ๊ฐ ํ์ํ์ง๋ง, ๋ ๋น ๋ฅธ ๊ฐ๋ฐ ์ฃผ๊ธฐ์ ๋ณํฉ ์ถฉ๋ ๊ฐ์๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
๋จ๊ณ:
- ๊ฐ๋ฐ์๋ค์ `main`์์ ์๋ช ์ด ์งง์ ํผ์ฒ ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค.
- ํผ์ฒ ๋ธ๋์น์ ๋ณ๊ฒฝ ์ฌํญ์ ์์ฃผ ์ปค๋ฐํฉ๋๋ค.
- ํผ์ฒ ๋ธ๋์น๋ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ, ์ด์์ ์ผ๋ก๋ ํ๋ฃจ์ ์ฌ๋ฌ ๋ฒ `main`์ ๋ณํฉ๋ฉ๋๋ค.
- ์ฝ๋ ํ์ง์ ๋ณด์ฅํ๊ธฐ ์ํด ๊ด๋ฒ์ํ ์๋ํ ํ ์คํธ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- ์์ง ๋ฆด๋ฆฌ์ค ์ค๋น๊ฐ ๋์ง ์์ ๊ธฐ๋ฅ์ ๊ธฐ๋ฅ ํ๋๊ทธ(feature flags) ๋ค์ ์จ๊ธธ ์ ์์ต๋๋ค.
์ฅ์ :
- ๋ ๋น ๋ฅธ ๊ฐ๋ฐ ์ฃผ๊ธฐ: ๋น๋ฒํ ํตํฉ์ ๋ณํฉ ์ถฉ๋์ ์ํ์ ์ค์ด๊ณ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํฉ๋๋ค.
- ๋ณํฉ ์ถฉ๋ ๊ฐ์: ๋ ์๊ณ ๋น๋ฒํ ๋ณํฉ์ ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ ์ต์ํํฉ๋๋ค.
- ์ง์์ ํตํฉ ๋ฐ ์ง์์ ์ ๋ฌ(CI/CD): TBD๋ CI/CD ํ์ดํ๋ผ์ธ์ ๋งค์ฐ ์ ํฉํฉ๋๋ค.
๊ณ ๋ ค์ฌํญ:
- ๋์ ์์ค์ ๊ท์จ๊ณผ ์๋ํ๋ ํ ์คํธ๊ฐ ํ์ํฉ๋๋ค.
- ๋๊ท๋ชจ ํ์ด๋ ๋ณต์กํ ํ๋ก์ ํธ์๋ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
- ๊ธฐ๋ฅ ํ๋๊ทธ์ ํจ๊ณผ์ ์ธ ์ฌ์ฉ์ด ํ์ํฉ๋๋ค.
์์:
๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA)์ ๊ฐ๋ฐํ๋ ํ์ด ํธ๋ ํฌ ๊ธฐ๋ฐ ๊ฐ๋ฐ์ ์ฑํํฉ๋๋ค. ๊ฐ๋ฐ์๋ค์ `main`์์ ์๊ณ ์ง์ค๋ ํผ์ฒ ๋ธ๋์น๋ฅผ ์์ฑํ๊ณ , ์์ฃผ ์ปค๋ฐํ๋ฉฐ, ํ๋ฃจ์ ์ฌ๋ฌ ๋ฒ ๋ณ๊ฒฝ ์ฌํญ์ `main`์ผ๋ก ๋ค์ ๋ณํฉํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ ์ ์ผ๋ก ์ ์ง๋๋๋ก ์๋ํ๋ ํ ์คํธ๊ฐ ์ง์์ ์ผ๋ก ์คํ๋ฉ๋๋ค. ์์ง ๋ฆด๋ฆฌ์ค ์ค๋น๊ฐ ๋์ง ์์ ๊ธฐ๋ฅ์ ๊ธฐ๋ฅ ํ๋๊ทธ ๋ค์ ์จ๊ฒจ์ ธ ์์ด, ํ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ์ํฅ์ ์ฃผ์ง ์์ผ๋ฉด์ ์๋ก์ด ์ฝ๋๋ฅผ ์ง์์ ์ผ๋ก ๋ฐฐํฌํ ์ ์์ต๋๋ค.
4. GitHub ํ๋ก์ฐ
GitHub ํ๋ก์ฐ๋ ํนํ ์๊ท๋ชจ ํ๊ณผ ๊ฐ๋จํ ํ๋ก์ ํธ์ ์ ํฉํ ๊ฒฝ๋ ์ํฌํ๋ก์ฐ์ ๋๋ค. ํผ์ฒ ๋ธ๋์น ์ํฌํ๋ก์ฐ์ ์ ์ฌํ์ง๋ง ์ง์์ ์ธ ๋ฐฐํฌ๋ฅผ ๋ ๊ฐ์กฐํฉ๋๋ค.
๋จ๊ณ:
- ๊ฐ๊ฐ์ ์๋ก์ด ๊ธฐ๋ฅ์ด๋ ๋ฒ๊ทธ ์์ ์ ๋ํด `main`์์ ์ ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค.
- ํผ์ฒ ๋ธ๋์น์์ ์ฝ๋๋ฅผ ๊ฐ๋ฐํ๊ณ ํ ์คํธํฉ๋๋ค.
- ํผ์ฒ ๋ธ๋์น์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ๊ธฐ์ ์ผ๋ก ์ปค๋ฐํฉ๋๋ค.
- ๊ธฐ๋ฅ์ด ์๋ฃ๋๊ณ ํ ์คํธ๋๋ฉด ํผ์ฒ ๋ธ๋์น๋ฅผ `main`์ ๋ณํฉํ๊ธฐ ์ํ ํ ๋ฆฌํ์คํธ๋ฅผ ์์ฑํฉ๋๋ค.
- ํ ๋ฆฌํ์คํธ์ ๋ํด ์ฝ๋ ๋ฆฌ๋ทฐ๊ฐ ์ํ๋ฉ๋๋ค.
- ํ ๋ฆฌํ์คํธ๊ฐ ์น์ธ๋๋ฉด ํผ์ฒ ๋ธ๋์น๋ `main`์ ๋ณํฉ๋๊ณ ์ฆ์ ํ๋ก๋์ ์ ๋ฐฐํฌ๋ฉ๋๋ค.
- ๊ทธ ํ ํผ์ฒ ๋ธ๋์น๋ ์ญ์ ๋ฉ๋๋ค.
์ฅ์ :
- ๊ฐ๋จํ๊ณ ์ดํดํ๊ธฐ ์ฌ์: ๋ฐฐ์ฐ๊ณ ๊ตฌํํ๊ธฐ ์ฝ์ต๋๋ค.
- ๋น ๋ฅธ ๋ฐฐํฌ ์ฃผ๊ธฐ: ํ๋ก๋์ ์ผ๋ก์ ๋น๋ฒํ ๋ฐฐํฌ๋ฅผ ์ฅ๋ คํฉ๋๋ค.
- ์๊ท๋ชจ ํ์ ์ ํฉ: ์๊ท๋ชจ ํ๊ณผ ๊ฐ๋จํ ํ๋ก์ ํธ์ ์ ์๋ํฉ๋๋ค.
๊ณ ๋ ค์ฌํญ:
- ์๊ฒฉํ ๋ฆด๋ฆฌ์ค ์ผ์ ์ด ์๋ ๋ณต์กํ ํ๋ก์ ํธ์๋ ์ ํฉํ์ง ์์ ์ ์์ต๋๋ค.
- ํ ๋ด ๋์ ์์ค์ ์ ๋ขฐ์ ํ์ ์ด ํ์ํฉ๋๋ค.
- ๋ฐฐํฌ ํ๋ก์ธ์ค์์ ๋์ ์์ค์ ์๋ํ๋ฅผ ๊ฐ์ ํฉ๋๋ค.
์์:
์๊ท๋ชจ ํ์ด ๊ฐ๋จํ ๋๋ฉ ํ์ด์ง๋ฅผ ๊ตฌ์ถํ๊ณ ์์ต๋๋ค. ์ด๋ค์ ์ฝ๋๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด GitHub ํ๋ก์ฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ฐ๋ฐ์๋ค์ ๋๋ฉ ํ์ด์ง์ ๊ฐ ์ ์น์ ์ ๋ํด ํผ์ฒ ๋ธ๋์น๋ฅผ ์์ฑํ๊ณ , ์์ฃผ ์ปค๋ฐํ๋ฉฐ, ์ฝ๋ ๋ฆฌ๋ทฐ ํ ๋ณ๊ฒฝ ์ฌํญ์ `main`์ผ๋ก ๋ค์ ๋ณํฉํฉ๋๋ค. `main`์ ๋ํ ๋ชจ๋ ์ปค๋ฐ์ ๋ผ์ด๋ธ ์น์ฌ์ดํธ์ ์๋์ผ๋ก ๋ฐฐํฌ๋ฉ๋๋ค.
์ฌ๋ฐ๋ฅธ Git ์ํฌํ๋ก์ฐ ์ ํํ๊ธฐ
ํ๋ก ํธ์๋ ๊ฐ๋ฐํ์ ๊ฐ์ฅ ์ ํฉํ Git ์ํฌํ๋ก์ฐ๋ ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ์์ธ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค:
- ํ๋ก์ ํธ ๊ท๋ชจ ๋ฐ ๋ณต์ก์ฑ: ๋ ํฌ๊ณ ๋ณต์กํ ํ๋ก์ ํธ๋ ๊นํ๋ก์ฐ์ ๊ฐ์ด ๋ ๊ตฌ์กฐํ๋ ์ํฌํ๋ก์ฐ๊ฐ ์ ๋ฆฌํ ์ ์์ต๋๋ค.
- ํ ๊ท๋ชจ ๋ฐ ๊ฒฝํ: ๊ฒฝํ์ด ์ ์ ์๊ท๋ชจ ํ์ GitHub ํ๋ก์ฐ์ ๊ฐ์ด ๋ ๊ฐ๋จํ ์ํฌํ๋ก์ฐ๋ฅผ ์ ํธํ ์ ์์ต๋๋ค.
- ๋ฆด๋ฆฌ์ค ๋น๋: ๋ฆด๋ฆฌ์ค๊ฐ ์ฆ์ ํ๋ก์ ํธ๋ ํธ๋ ํฌ ๊ธฐ๋ฐ ๊ฐ๋ฐ์ด ์ ๋ฆฌํ ์ ์์ต๋๋ค.
- ํ ๋ฌธํ: ์ํฌํ๋ก์ฐ๋ ํ์ ๋ฌธํ ๋ฐ ์ ํธ๋์ ์ผ์นํด์ผ ํฉ๋๋ค.
- CI/CD ํ์ดํ๋ผ์ธ: ์ํฌํ๋ก์ฐ๋ ํ์ CI/CD ํ์ดํ๋ผ์ธ๊ณผ ํธํ๋์ด์ผ ํฉ๋๋ค.
๋ค์์ Git ์ํฌํ๋ก์ฐ๋ฅผ ์ ํํ ๋ ๊ณ ๋ คํด์ผ ํ ์ฃผ์ ์์๋ฅผ ์์ฝํ ํ์ ๋๋ค:
์์ธ | ํผ์ฒ ๋ธ๋์น | ๊นํ๋ก์ฐ | ํธ๋ ํฌ ๊ธฐ๋ฐ | GitHub ํ๋ก์ฐ |
---|---|---|---|---|
ํ๋ก์ ํธ ๋ณต์ก์ฑ | ์ค๊ฐ | ๋์ | ๋ฎ์์์ ์ค๊ฐ | ๋ฎ์ |
ํ ๊ท๋ชจ | ์ค๊ฐ์์ ๋๊ท๋ชจ | ๋๊ท๋ชจ | ์๊ท๋ชจ์์ ์ค๊ฐ | ์๊ท๋ชจ |
๋ฆด๋ฆฌ์ค ๋น๋ | ๋ณดํต | ์์ฝ๋จ | ์ฆ์ | ๋งค์ฐ ์ฆ์ |
CI/CD ํตํฉ | ์ข์ | ๋ณดํต | ํ์ํจ | ํ์ํจ |
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์์ Git ์ํฌํ๋ก์ฐ ๋ชจ๋ฒ ์ฌ๋ก
์ ํํ Git ์ํฌํ๋ก์ฐ์ ๊ด๊ณ์์ด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ฉด ํ์ , ์ฝ๋ ํ์ง ๋ฐ ์ ๋ฐ์ ์ธ ๊ฐ๋ฐ ํจ์จ์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค:
- ์๋ฏธ ์๋ ๋ธ๋์น ์ด๋ฆ ์ฌ์ฉ: ๋ธ๋์น ์ด๋ฆ์ ์ค๋ช ์ ์ด์ด์ผ ํ๋ฉฐ ๋ธ๋์น์ ๋ชฉ์ ์ ๋ช ํํ๊ฒ ๋ํ๋ด์ผ ํฉ๋๋ค(์: `feature/add-user-profile`, `bugfix/resolve-responsive-issue`).
- ์์ฃผ ์ปค๋ฐํ๊ธฐ: ๋ช ํํ๊ณ ๊ฐ๊ฒฐํ ์ปค๋ฐ ๋ฉ์์ง์ ํจ๊ป ์๊ณ ๋น๋ฒํ ์ปค๋ฐ์ ํ์ธ์. ์ด๋ ๊ฒ ํ๋ฉด ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๊ณ ํ์ํ ๊ฒฝ์ฐ ์ด์ ๋ฒ์ ์ผ๋ก ๋๋๋ฆฌ๊ธฐ ์ฌ์์ง๋๋ค.
- ์ข์ ์ปค๋ฐ ๋ฉ์์ง ์์ฑํ๊ธฐ: ์ปค๋ฐ ๋ฉ์์ง๋ ์ปค๋ฐ์ ๋ชฉ์ ๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ์ปจํ ์คํธ๋ฅผ ์ค๋ช ํด์ผ ํฉ๋๋ค. ๋ช ๋ นํ(์: "์ฌ์ฉ์ ์ธ์ฆ ์ถ๊ฐ", "CSS ์คํ์ผ๋ง ๋ฌธ์ ์์ ")๊ณผ ๊ฐ์ ์ผ๊ด๋ ํ์์ ๋ฐ๋ฅด์ธ์.
- ์ ๊ธฐ์ ์ผ๋ก ํ(Pull)ํ๊ธฐ: ์๊ฒฉ ์ ์ฅ์์์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ๊ธฐ์ ์ผ๋ก ๊ฐ์ ธ์ ๋ก์ปฌ ๋ธ๋์น๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ์ธ์. ์ด๋ ๋ณํฉ ์ถฉ๋์ ์ํ์ ์ต์ํํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ์ถฉ๋์ ์ ์คํ๊ฒ ํด๊ฒฐํ๊ธฐ: ๋ณํฉ ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ์ ์คํ๊ณ ์ฒ ์ ํ๊ฒ ํด๊ฒฐํ์ธ์. ์ถฉ๋์ ์ผ์ผํค๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ดํดํ๊ณ ์ ์ ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ํํ์ธ์.
- ์ฝ๋ ๋ฆฌ๋ทฐ: ์ฝ๋ ํ์ง๊ณผ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ฝ๋ ๋ฆฌ๋ทฐ ํ๋ก์ธ์ค๋ฅผ ๊ตฌํํ์ธ์. ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์ฉ์ดํ๊ฒ ํ๊ธฐ ์ํด ํ ๋ฆฌํ์คํธ๋ฅผ ์ฌ์ฉํ์ธ์.
- ์๋ํ๋ ํ ์คํธ: CI/CD ํ์ดํ๋ผ์ธ์ ์๋ํ๋ ํ ์คํธ๋ฅผ ํตํฉํ์ฌ ๋ฒ๊ทธ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ๊ณ ํ๊ท๋ฅผ ๋ฐฉ์งํ์ธ์.
- ๊ธฐ๋ฅ ํ๋๊ทธ ์ฌ์ฉ: ๊ธฐ๋ฅ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฏธ์์ฑ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉ์์๊ฒ ์จ๊ธฐ๊ณ A/B ํ ์คํธ๋ฅผ ํ์ฑํํ์ธ์.
- ์ํฌํ๋ก์ฐ ๋ฌธ์ํ: ์ ํํ Git ์ํฌํ๋ก์ฐ๋ฅผ ๋ช ํํ๊ฒ ๋ฌธ์ํํ๊ณ ๋ชจ๋ ํ์์ด ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋๋ก ํ์ธ์.
- ์ฝ๋ ์คํ์ผ ๊ฐ์ : ๋ฆฐํฐ์ ํฌ๋งทํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ ์ ๋ฐ์ ๊ฑธ์ณ ์ผ๊ด๋ ์ฝ๋ ์คํ์ผ์ ๊ฐ์ ํ์ธ์.
- Git ํ ์ฌ์ฉ: Git ํ ์ ๊ตฌํํ์ฌ ์ปค๋ฐ์ด๋ ํธ์ ์ ์ ๋ฆฐํฐ, ํฌ๋งทํฐ, ํ ์คํธ ์คํ๊ณผ ๊ฐ์ ์์ ์ ์๋ํํ์ธ์.
- ๋ธ๋์น๋ฅผ ์งง๊ฒ ์ ์งํ๊ธฐ: ๋ณํฉ ์ถฉ๋์ ์ํ์ ์ต์ํํ๊ณ ๋น๋ฒํ ํตํฉ์ ์ฅ๋ คํ๊ธฐ ์ํด ํผ์ฒ ๋ธ๋์น๋ฅผ ์งง๊ฒ ์ ์งํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ์ธ์.
- ๋ณํฉ ํ ๋ธ๋์น ์ญ์ : ํผ์ฒ ๋ธ๋์น๊ฐ `main` ๋๋ `develop`์ ๋ณํฉ๋ ํ์๋ ์ ์ฅ์๋ฅผ ๊นจ๋ํ๊ณ ์ฒด๊ณ์ ์ผ๋ก ์ ์งํ๊ธฐ ์ํด ์ญ์ ํ์ธ์.
Git ์ํฌํ๋ก์ฐ ๊ด๋ฆฌ ๋๊ตฌ
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์ Git ์ํฌํ๋ก์ฐ ๊ด๋ฆฌ๋ฅผ ๊ฐ์ํํ๋ ๋ฐ ๋์์ด ๋๋ ์ฌ๋ฌ ๋๊ตฌ๊ฐ ์์ต๋๋ค:
- GitHub, GitLab, Bitbucket: ํ์ , ์ฝ๋ ๋ฆฌ๋ทฐ, CI/CD๋ฅผ ์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ธ๊ธฐ ์๋ Git ํธ์คํ ํ๋ซํผ์ ๋๋ค.
- SourceTree, GitKraken: ์ผ๋ฐ์ ์ธ Git ์์ ์ ๋จ์ํํ๋ Git์ฉ GUI ํด๋ผ์ด์ธํธ์ ๋๋ค.
- CI/CD ๋๊ตฌ (์: Jenkins, CircleCI, Travis CI, GitLab CI): ๋น๋, ํ ์คํธ, ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ๋ ๋๊ตฌ์ ๋๋ค.
- ์ฝ๋ ๋ฆฌ๋ทฐ ๋๊ตฌ (์: Crucible, Reviewable): ์ธ๋ผ์ธ ๋๊ธ ๋ฐ ์ฝ๋ ๋น๊ต์ ๊ฐ์ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์ํ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋๊ตฌ์ ๋๋ค.
- ์์ ๊ด๋ฆฌ ๋๊ตฌ (์: Jira, Trello, Asana): Git์ ์์ ๊ด๋ฆฌ ๋๊ตฌ์ ํตํฉํ์ฌ ์งํ ์ํฉ์ ์ถ์ ํ๊ณ ์ปค๋ฐ์ ํน์ ์์ ์ ์ฐ๊ฒฐํ์ธ์.
์์: GitHub๋ก ํผ์ฒ ๋ธ๋์น ์ํฌํ๋ก์ฐ ๊ตฌํํ๊ธฐ
GitHub๋ฅผ ์ฌ์ฉํ์ฌ ํผ์ฒ ๋ธ๋์น ์ํฌํ๋ก์ฐ๋ฅผ ์ค๋ช ํด ๋ณด๊ฒ ์ต๋๋ค:
- GitHub์ ์ ์ ์ฅ์๋ฅผ ์์ฑํฉ๋๋ค.
- ์ ์ฅ์๋ฅผ ๋ก์ปฌ ๋จธ์ ์ ํด๋ก ํฉ๋๋ค:
```bash
git clone
``` - ๊ธฐ๋ฅ์ ์ํ ์ ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค: ```bash git checkout -b feature/add-responsive-design ```
- ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ปค๋ฐํฉ๋๋ค: ```bash git add . git commit -m "Add responsive design styles" ```
- ๋ธ๋์น๋ฅผ GitHub์ ํธ์ํฉ๋๋ค: ```bash git push origin feature/add-responsive-design ```
- GitHub์์ ํ ๋ฆฌํ์คํธ๋ฅผ ์์ฑํฉ๋๋ค: GitHub์ ์ ์ฅ์๋ก ์ด๋ํ์ฌ `feature/add-responsive-design` ๋ธ๋์น์์ `main` ๋ธ๋์น๋ก ์ ํ ๋ฆฌํ์คํธ๋ฅผ ์์ฑํฉ๋๋ค.
- ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์์ฒญํฉ๋๋ค: ํ ๋ฆฌํ์คํธ์ ๋ฆฌ๋ทฐ์ด๋ฅผ ํ ๋นํ๊ณ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์์ฒญํฉ๋๋ค.
- ํผ๋๋ฐฑ์ ๋ฐ์ํฉ๋๋ค: ์ฝ๋ ๋ฆฌ๋ทฐ์ ํผ๋๋ฐฑ์ ๋ฐ์ํ๊ณ ํ์ํ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํฉ๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ ํผ์ฒ ๋ธ๋์น์ ์ปค๋ฐํ๊ณ GitHub์ ํธ์ํฉ๋๋ค. ํ ๋ฆฌํ์คํธ๋ ์๋์ผ๋ก ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
- ํ ๋ฆฌํ์คํธ๋ฅผ ๋ณํฉํฉ๋๋ค: ์ฝ๋ ๋ฆฌ๋ทฐ๊ฐ ์น์ธ๋๋ฉด ํ ๋ฆฌํ์คํธ๋ฅผ `main` ๋ธ๋์น์ ๋ณํฉํฉ๋๋ค.
- ํผ์ฒ ๋ธ๋์น๋ฅผ ์ญ์ ํฉ๋๋ค: ํ ๋ฆฌํ์คํธ๊ฐ ๋ณํฉ๋ ํ `feature/add-responsive-design` ๋ธ๋์น๋ฅผ ์ญ์ ํฉ๋๋ค.
๊ฒฐ๋ก
์ ์ ํ Git ์ํฌํ๋ก์ฐ ์ ๋ต์ ์ ํํ๊ณ ๊ตฌํํ๋ ๊ฒ์ ์ฑ๊ณต์ ์ธ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ํ๋ก์ ํธ์ ์๊ตฌ ์ฌํญ, ํ ๊ท๋ชจ, ๋ฆด๋ฆฌ์ค ๋น๋๋ฅผ ์ ์คํ๊ฒ ๊ณ ๋ คํจ์ผ๋ก์จ ํ์ ์์ ๋ค์ ์๊ตฌ์ ๊ฐ์ฅ ์ ํฉํ ์ํฌํ๋ก์ฐ๋ฅผ ์ ํํ ์ ์์ต๋๋ค. ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ํํ๊ณ , ์ ์ ํ ๋๊ตฌ๋ฅผ ํ์ฉํ๋ฉฐ, ํ์ , ์ฝ๋ ํ์ง, ๊ฐ๋ฐ ํจ์จ์ฑ์ ์ต์ ํํ๊ธฐ ์ํด ์ํฌํ๋ก์ฐ๋ฅผ ์ง์์ ์ผ๋ก ๊ฐ์ ํ๋ ๊ฒ์ ์์ง ๋ง์ธ์. ๊ฐ ์ ๋ต์ ๋ฏธ๋ฌํ ์ฐจ์ด๋ฅผ ์ดํดํ๋ฉด ์ค๋๋ ๋น ๋ฅด๊ฒ ๋ณํํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๊ฒฝ์์ ํ์ด ๊ณ ํ์ง์ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํจ์จ์ ์ด๊ณ ์์ ์ ์ผ๋ก ์ ๊ณตํ ์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค. ํ์ ์ ์ด๊ณ ์์ฐ์ ์ธ ๊ฐ๋ฐ ํ๊ฒฝ์ ์กฐ์ฑํ๊ธฐ ์ํด ํน์ ํ๊ณผ ํ๋ก์ ํธ ์๊ตฌ์ ์๋ฒฝํ๊ฒ ๋ง๋๋ก ์ด๋ฌํ ์ํฌํ๋ก์ฐ๋ฅผ ์กฐ์ ํ๊ณ ๋ง์ถคํํ๋ ๊ฒ์ ๋๋ ค์ํ์ง ๋ง์ธ์.