Git Flow๋ ๊ธฐ๋ฅ ๊ฐ๋ฐ, ๋ฐฐํฌ, ์ ์ง๋ณด์ ๋ฑ์ ์์ ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋๋ก ์ค๊ณ๋ Git ๋ธ๋์น ์ ๋ต์ ๋๋ค.
ํนํ, ํ ํ๋ก์ ํธ๋ ์ง์์ ์ธ ๋ฐฐํฌ(CI/CD) ํ๊ฒฝ์์ ์ ์ฉํ๊ฒ ํ์ฉ๋ฉ๋๋ค.
1. Git Flow์ ํต์ฌ ๊ฐ๋
Git Flow์์๋ ์ด 5๊ฐ์ง ์ฃผ์ ๋ธ๋์น๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ ๋ณ๊ฒฝ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํฉ๋๋ค.
โ Main ๋ธ๋์น (main or master)
- ๋ฐฐํฌ(Release)๋ ์ต์ข ์์ ์ ์ธ ์ฝ๋๊ฐ ์๋ ๋ธ๋์น
- ์ง์ ์์ ํ์ง ์์ผ๋ฉฐ, develop ๋ธ๋์น์์ ๊ฒ์ฆ๋ ์ฝ๋๋ง ๋ณํฉ๋จ
โ Develop ๋ธ๋์น (develop)
- ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์งํํ๋ ๋ธ๋์น
- feature ๋ธ๋์น์์ ๊ฐ๋ฐ๋ ์ฝ๋๊ฐ ๋จธ์ง๋๋ฉฐ, ์ด ๋ธ๋์น๋ฅผ ๊ธฐ์ค์ผ๋ก release ๋ธ๋์น๊ฐ ์์ฑ๋จ
โ Feature ๋ธ๋์น (feature/)
- ์๋ก์ด ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ ๋ ์ฌ์ฉํ๋ ๋ธ๋์น
- develop ๋ธ๋์น์์ ๋ถ๊ธฐํ๋ฉฐ, ๊ฐ๋ฐ ์๋ฃ ํ develop ๋ธ๋์น์ ๋ณํฉ
- ๋ธ๋์น ๋ช ๋ช ๊ท์น: feature/๊ธฐ๋ฅ๋ช (์: feature/login-api)
โ Release ๋ธ๋์น (release/)
- ๋ฐฐํฌ ์ ํ ์คํธ ๋ฐ ๋ฒ๊ทธ ์์ ์ ๋ด๋นํ๋ ๋ธ๋์น
- develop ๋ธ๋์น์์ ๋ถ๊ธฐํ๋ฉฐ, ์์ ํ ํ main ๋ธ๋์น์ ๋ณํฉ
- ๋ธ๋์น ๋ช ๋ช ๊ท์น: release/๋ฒ์ ๋ช (์: release/v1.0.0)
โ Hotfix ๋ธ๋์น (hotfix/)
- main ๋ธ๋์น์์ ๋ฐ๊ฒฌ๋ ๊ธด๊ธํ ๋ฒ๊ทธ๋ฅผ ์์ ํ๋ ๋ธ๋์น
- main ๋ธ๋์น์์ ์ง์ ๋ถ๊ธฐํ๊ณ , ์์ ์๋ฃ ํ main๊ณผ develop์ ๋ณํฉ
- ๋ธ๋์น ๋ช ๋ช ๊ท์น: hotfix/๋ฒ๊ทธ๋ช (์: hotfix/critical-bug)
2. Git Flow ๋ธ๋์น ํ๋ฆ ์์
๐น ๊ธฐ๋ฅ ๊ฐ๋ฐ (Feature ๋ธ๋์น)
git checkout develop
git checkout -b feature/login-api
# ๊ฐ๋ฐ ํ ์ปค๋ฐ ๋ฐ ๋ณํฉ
git add .
git commit -m "๋ก๊ทธ์ธ API ๊ฐ๋ฐ ์๋ฃ"
git checkout develop
git merge feature/login-api
# feature ๋ธ๋์น ์ญ์
git branch -d feature/login-api
๐น ๋ฆด๋ฆฌ์ฆ ์ค๋น (Release ๋ธ๋์น)
git checkout develop
git checkout -b release/v1.0.0
git add .
git commit -m "๋ฒ๊ทธ ์์ ๋ฐ ๋ฐฐํฌ ์ค๋น ์๋ฃ"
git checkout main
git merge release/v1.0.0
git checkout develop
git merge release/v1.0.0
# release ๋ธ๋์น ์ญ์
git branch -d release/v1.0.0
๐น ๊ธด๊ธ ๋ฒ๊ทธ ์์ (Hotfix ๋ธ๋์น)
git checkout main
git checkout -b hotfix/critical-bug
git add .
git commit -m "๊ธด๊ธ ๋ฒ๊ทธ ์์ ์๋ฃ"
git checkout main
git merge hotfix/critical-bug
git checkout develop
git merge hotfix/critical-bug
# hotfix ๋ธ๋์น ์ญ์
git branch -d hotfix/critical-bug
3. Git Flow ํ๋ฌ๊ทธ์ธ์ ํ์ฉํ ๊ฐํธํ ๊ด๋ฆฌ
๐น Git Flow ํ๋ฌ๊ทธ์ธ ์ค์น ๋ฐ ์ด๊ธฐํ
git flow init
๐น ๊ธฐ๋ฅ ๊ฐ๋ฐ (Feature Start & Finish)
git flow feature start login-api
git flow feature finish login-api
๐น ๋ฆด๋ฆฌ์ฆ ์ค๋น ๋ฐ ์๋ฃ (Release Start & Finish)
git flow release start v1.0.0
git flow release finish v1.0.0
๐น ๊ธด๊ธ ๋ฒ๊ทธ ์์ (Hotfix Start & Finish)
git flow hotfix start critical-bug
git flow hotfix finish critical-bug
4. Git Flow vs GitHub Flow ๋น๊ต
ํน์ง | Git Flow | GitHub Flow |
๋ธ๋์น ๊ตฌ์กฐ | main, develop, feature, release, hotfix | main, feature |
์ฃผ์ ์ฌ์ฉ ๋ชฉ์ | ์์ ์ ์ธ ๋ฆด๋ฆฌ์ค ๊ด๋ฆฌ (๋๊ท๋ชจ ํ๋ก์ ํธ) | ๋น ๋ฅธ ๋ฐฐํฌ์ ๋จ์ํ ๊ฐ๋ฐ (์๊ท๋ชจ ํ๋ก์ ํธ) |
๋ฐฐํฌ ๋ฐฉ์ | release ๋ธ๋์น๋ฅผ ํตํด ๋ฐฐํฌ | main ๋ธ๋์น์์ ์ง์ ๋ฐฐํฌ |
ํ์ ๋ฐฉ์ | ๊ธฐ๋ฅ ๊ฐ๋ฐ ํ develop์ผ๋ก ๋ณํฉ, ์ดํ release → main | ๊ธฐ๋ฅ ๊ฐ๋ฐ ํ ๋ฐ๋ก main์ ๋ณํฉ |
์ฌ์ฉ ํ๊ฒฝ | ์ํฐํ๋ผ์ด์ฆ, ์ฅ๊ธฐ ์ ์ง๋ณด์ ํ๋ก์ ํธ | ์คํํธ์ , ๋น ๋ฅธ ๋ฐฐํฌ๊ฐ ํ์ํ ์๋น์ค |
์ฅ์ | ๋ช ํํ ๋ธ๋์น ๊ด๋ฆฌ, ๋ฒ์ ๋ณ ์ ์ง๋ณด์ ๊ฐ๋ฅ | ๋จ์ํ ๋ธ๋์น ๊ตฌ์กฐ, ๋น ๋ฅธ ๋ฐฐํฌ ๊ฐ๋ฅ |
๋จ์ | ๋ธ๋์น๊ฐ ๋ง์ ๋ณต์กํ ์ ์์ | ์ฅ๊ธฐ ์ ์ง๋ณด์์๋ ๋ถ๋ฆฌํจ |
5. Git Flow vs GitHub Flow, ์ด๋ค ๊ฑธ ์ ํํ ๊น?
โ Git Flow ์ถ์ฒ
- ์ฅ๊ธฐ ์ ์ง๋ณด์๊ฐ ํ์ํ ํ๋ก์ ํธ
- ์ฌ๋ฌ ๋ช ์ ๊ฐ๋ฐ์๊ฐ ํ์ ํ๋ ํ๊ฒฝ
- ๋ฐฐํฌ ์ ์ฒ ์ ํ ๊ฒ์ฆ์ด ํ์ํ ํ๋ก์ ํธ
โ GitHub Flow ์ถ์ฒ
- ๋น ๋ฅธ ๋ฐฐํฌ๊ฐ ์ค์ํ ํ๋ก์ ํธ
- ์คํํธ์ , ์ ์์ผ(Agile) ๊ฐ๋ฐ ๋ฐฉ์
- ์๊ท๋ชจ ํ์์ ํ์ ํ๋ ํ๋ก์ ํธ
๐ก ๊ฒฐ๋ก : ์์ ํ๋ก์ ํธ๋ MVP ๊ฐ๋ฐ์ด๋ผ๋ฉด GitHub Flow๊ฐ ๋ ์ ํฉํ๊ณ ,
๊ท๋ชจ๊ฐ ํฌ๊ณ ํ์ ์ด ํ์ํ ํ๋ก์ ํธ๋ผ๋ฉด Git Flow๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
6. ๋ง๋ฌด๋ฆฌ
Git Flow๋ ๊ธฐ๋ฅ ๊ฐ๋ฐ, ๋ฐฐํฌ, ์ ์ง๋ณด์ ๋ฑ ํ๋ก์ ํธ์ ํ๋ฆ์ ์ฒด๊ณ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋๋ก ๋์์ฃผ๋ ๋ธ๋์น ์ ๋ต์ ๋๋ค.
ํ์ง๋ง ํ๋ก์ ํธ ๊ท๋ชจ์ ํ์ ๊ฐ๋ฐ ๋ฐฉ์์ ๋ฐ๋ผ ์ ์ ํ ์ ๋ต์ ์ ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๐ฅ ์ฌ๋ฌ๋ถ์ ํ๋ก์ ํธ ํน์ฑ์ ๋ง๋ ๋ธ๋์น ์ ๋ต์ ์ ํํ์ฌ ๋์ฑ ํจ์จ์ ์ธ ๊ฐ๋ฐ์ ์งํํ์ธ์!
'๐ Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JWT (JSON Web Token)๋? ์ฝ๊ฒ ์ดํดํ๊ธฐ (0) | 2025.02.27 |
---|---|
RESTful API๋? ๊ฐ๋ ๋ถํฐ ์ค๊ณ ์์น, ๊ตฌํ ์ ๋ฆฌ (1) | 2025.02.27 |
[๋ฐฐํฌ] AWS์ Jenkins๋ฅผ ํ์ฉํ GitHub Webhook ๊ธฐ๋ฐ CI/CD ๊ตฌ์ถ (0) | 2025.01.17 |
[๋ฐฐํฌ] ์ ํจ์ค Docker ์ปจํ ์ด๋ ์คํ ๋ฐ ์ฌ์์ ํ ์ ์ (0) | 2025.01.14 |