๋ชจ๋ ๊ท๋ชจ์ ํ์ ์ํ Git ์ํฌํ๋ก์ฐ ์ข ํฉ ๊ฐ์ด๋. Git ๋ธ๋์น, ํ ๋ฆฌํ์คํธ, ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ์ฌ ํ์ ๊ณผ ์ํํธ์จ์ด ํ์ง์ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.
ํ์ ๊ฐ๋ฐ์ ์ํ Git ์ํฌํ๋ก์ฐ ๋ง์คํฐํ๊ธฐ
๋ฒ์ ๊ด๋ฆฌ๋ ํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ด์์ ๋๋ค. ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํตํด ํ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๊ณ , ํจ๊ณผ์ ์ผ๋ก ํ์ ํ๋ฉฐ, ๋ณต์กํ ํ๋ก์ ํธ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ธ Git์ ์ ์ฐํ ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํ์ง๋ง, ๊ทธ ๊ฐ๋ ฅํจ์๋ ์ฑ ์์ด ๋ฐ๋ฆ ๋๋ค. ๋ฐ๋ก ์ฌ๋ฐ๋ฅธ ์ํฌํ๋ก์ฐ๋ฅผ ์ ํํ๋ ๊ฒ์ ๋๋ค. ์ด ๊ฐ์ด๋์์๋ ๋ค์ํ Git ์ํฌํ๋ก์ฐ, ๊ฐ๊ฐ์ ์ฅ๋จ์ ์ ์ดํด๋ณด๊ณ , ํ์ ๊ฐ์ฅ ์ ํฉํ ์ ๊ทผ ๋ฐฉ์์ ์ ํํ๊ธฐ ์ํ ์ค์ฉ์ ์ธ ์ง์นจ์ ์ ๊ณตํฉ๋๋ค.
Git ์ํฌํ๋ก์ฐ๋ ์ ์ค์ํ๊ฐ์?
์ ์๋ ์ํฌํ๋ก์ฐ๊ฐ ์์ผ๋ฉด Git์ ๊ธ๋ฐฉ ํผ๋์ค๋ฌ์์ง ์ ์์ต๋๋ค. ํ์๋ค์ด ์๋ก์ ์์ ์ ๋ฎ์ด์ฐ๊ฑฐ๋, ์์ ๋ ๋ชจ๋ฅด๊ฒ ๋ฒ๊ทธ๋ฅผ ์ ์ ์ํค๊ฑฐ๋, ์๋ก์ด ๊ธฐ๋ฅ์ ํตํฉํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช์ ์ ์์ต๋๋ค. ์ ์ ์๋ Git ์ํฌํ๋ก์ฐ๋ ๊ตฌ์กฐ์ ๋ช ํ์ฑ์ ์ ๊ณตํ์ฌ ๋ค์๊ณผ ๊ฐ์ ์ด์ ์ ๊ฐ์ ธ์ต๋๋ค:
- ํฅ์๋ ํ์ : ์ฝ๋ ๊ธฐ์ฌ์ ๋ํ ๋ช ํํ๊ฒ ์ ์๋ ํ๋ก์ธ์ค๋ ๋ชจ๋ ์ฌ๋์ด ๊ด๋ จ๋ ๋จ๊ณ๋ฅผ ์ดํดํ๋๋ก ํ์ฌ ํผ๋๊ณผ ์ถฉ๋์ ์ค์ ๋๋ค.
- ๋์ ์ฝ๋ ํ์ง: ์ํฌํ๋ก์ฐ๋ ์ข ์ข ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํฌํจํ์ฌ ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ๋ณ๊ฒฝ ์ฌํญ์ ๋ณํฉํ๊ธฐ ์ ์ ๊ฒ์ฌํ์ฌ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ ์ ์๋๋ก ํฉ๋๋ค.
- ๋ ๋น ๋ฅธ ๊ฐ๋ฐ ์ฃผ๊ธฐ: ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํจ์ผ๋ก์จ ํ์ ๊ธฐ๋ฅ๊ณผ ๋ฒ๊ทธ ์์ ์ ๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์ ๊ณตํ ์ ์์ต๋๋ค.
- ์ํ ๊ฐ์: ๋ธ๋์น ์ ๋ต์ ํตํด ํ์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฒฉ๋ฆฌํ๊ณ ์ฃผ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ฐฉํดํ์ง ์์ผ๋ฉด์ ์๋ก์ด ๊ธฐ๋ฅ์ ์คํํ ์ ์์ต๋๋ค.
- ๋ ๋์ ์ถ์ ์ฑ: ์ผ๊ด๋ ์ํฌํ๋ก์ฐ์ ๊ฒฐํฉ๋ Git์ ํ์คํ ๋ฆฌ ์ถ์ ๊ธฐ๋ฅ์ ๋ณ๊ฒฝ์ด ์ด๋ป๊ฒ, ์ ์ด๋ฃจ์ด์ก๋์ง ๋ ์ฝ๊ฒ ์ดํดํ ์ ์๋๋ก ํฉ๋๋ค.
์ผ๋ฐ์ ์ธ Git ์ํฌํ๋ก์ฐ
๋ช ๊ฐ์ง ์ธ๊ธฐ ์๋ Git ์ํฌํ๋ก์ฐ๊ฐ ๋ฑ์ฅํ์ผ๋ฉฐ, ๊ฐ๊ฐ ๊ณ ์ ํ ์ฅ๋จ์ ์ด ์์ต๋๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ ๊ทผ ๋ฐฉ์ ๋ช ๊ฐ์ง๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
1. ์ค์ ์ง์ค์ ์ํฌํ๋ก์ฐ
์ค์ ์ง์ค์ ์ํฌํ๋ก์ฐ๋ ๊ฐ์ฅ ๊ฐ๋จํ Git ์ํฌํ๋ก์ฐ๋ก, Subversion(SVN)๊ณผ ๊ฐ์ ๋ค๋ฅธ ๋ฒ์ ๊ด๋ฆฌ ์์คํ
์์ ์ ํํ๋ ํ์ด ์์ฃผ ์ฌ์ฉํฉ๋๋ค. ์ด ์ํฌํ๋ก์ฐ๋ ๋จ์ผ main ๋ธ๋์น(์ด์ ์๋ master๋ก ์๋ ค์ง)๋ฅผ ์ค์ฌ์ผ๋ก ์งํ๋ฉ๋๋ค. ๊ฐ๋ฐ์๋ค์ ๋ณ๊ฒฝ ์ฌํญ์ ์ด ์ค์ ๋ธ๋์น์ ์ง์ ์ปค๋ฐํฉ๋๋ค.
์๋ ๋ฐฉ์:
- ๊ฐ๋ฐ์๋ค์
main๋ธ๋์น์์ ์ต์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์ ธ์ต๋๋ค. - ๋ก์ปฌ์์ ๋ณ๊ฒฝ ์์ ์ ํฉ๋๋ค.
- ์์ ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ก์ปฌ์ ์ปค๋ฐํฉ๋๋ค.
- ์์ ์ ๋ณ๊ฒฝ ์ฌํญ์
main๋ธ๋์น์ ํธ์ํฉ๋๋ค.
์ฅ์ :
- ์ดํดํ๊ณ ๊ตฌํํ๊ธฐ ์ฝ์ต๋๋ค.
- ๋ณ๋ ฌ ๊ฐ๋ฐ์ด ๊ฑฐ์ ์๋ ์๊ท๋ชจ ํ์ ์ ํฉํฉ๋๋ค.
๋จ์ :
- ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ๋์ผํ ํ์ผ์์ ์์ ํ ๋ ์ถฉ๋ ์ํ์ด ๋์ต๋๋ค.
- ๊ธฐ๋ฅ์ด๋ ์คํ์ ๊ฒฉ๋ฆฌ๊ฐ ์์ต๋๋ค.
- ํฌ๊ฑฐ๋ ๋ณต์กํ ํ๋ก์ ํธ์๋ ์ ํฉํ์ง ์์ต๋๋ค.
์์: ๊ฐ๋จํ ์น์ฌ์ดํธ๋ฅผ ์์
ํ๋ ์๊ท๋ชจ ์น ๊ฐ๋ฐ์ ํ์ ์์ํด ๋ณด์ธ์. ๊ทธ๋ค์ ๋ชจ๋ main ๋ธ๋์น์ ์ง์ ์ปค๋ฐํฉ๋๋ค. ํจ๊ณผ์ ์ผ๋ก ์ํตํ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ ์กฐ์จํ๋ ํ ์ด ๋ฐฉ์์ ์ ์๋ํฉ๋๋ค.
2. ๊ธฐ๋ฅ ๋ธ๋์น ์ํฌํ๋ก์ฐ
๊ธฐ๋ฅ ๋ธ๋์น ์ํฌํ๋ก์ฐ๋ ๋ชจ๋ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ ์ฉ ๋ธ๋์น์์ ๊ฒฉ๋ฆฌํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ์๋ก ๋ฐฉํดํ์ง ์๊ณ ๋์์ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ๋ํด ์์ ํ ์ ์์ต๋๋ค.
์๋ ๋ฐฉ์:
- ๊ฐ๋ฐ์๋ค์
main๋ธ๋์น๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ ๊ธฐ๋ฅ์ ๋ํ ์ ๋ธ๋์น๋ฅผ ๋ง๋ญ๋๋ค. - ์์ ์ ๊ธฐ๋ฅ ๋ธ๋์น์์ ๋ณ๊ฒฝํ๊ณ ์ปค๋ฐํฉ๋๋ค.
- ๊ธฐ๋ฅ์ด ์๋ฃ๋๋ฉด, ์ข
์ข
ํ ๋ฆฌํ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ๋ฅ ๋ธ๋์น๋ฅผ ๋ค์
main๋ธ๋์น์ ๋ณํฉํฉ๋๋ค.
์ฅ์ :
- ๊ธฐ๋ฅ์ ๋ฐ์ด๋ ๊ฒฉ๋ฆฌ.
- ๋ณ๋ ฌ ๊ฐ๋ฐ ๊ฐ๋ฅ.
- ๋ณํฉ ์ ์ฝ๋ ๋ฆฌ๋ทฐ ๊ฐ๋ฅ.
๋จ์ :
- ์ค์ ์ง์ค์ ์ํฌํ๋ก์ฐ๋ณด๋ค ๋ ๋ณต์กํฉ๋๋ค.
- ๋ธ๋์น ๊ด๋ฆฌ์ ๊ท์จ์ด ํ์ํฉ๋๋ค.
์์: ๋ชจ๋ฐ์ผ ์ฑ์ ๊ฐ๋ฐํ๋ ํ์ ์๋ก์ด ๊ฒฐ์ ๋ฐฉ๋ฒ ์ถ๊ฐ๋ ํธ์ ์๋ฆผ ๊ตฌํ๊ณผ ๊ฐ์ ๊ฐ ์ ๊ท ๊ธฐ๋ฅ์ ๋ํด ๊ธฐ๋ฅ ๋ธ๋์น๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค์ด ๋ ๋ฆฝ์ ์ผ๋ก ์์ ํ ์ ์๊ณ ๋ถ์์ ํ ์ฝ๋๊ฐ ๋ฉ์ธ ์ฝ๋๋ฒ ์ด์ค์ ๋ค์ด๊ฐ์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
3. Gitflow ์ํฌํ๋ก์ฐ
Gitflow๋ ๋ค์ํ ๋ชฉ์ ์ ์ํด ํน์ ๋ธ๋์น ์ ํ์ ์ ์ํ๋ ๋ ๊ตฌ์กฐํ๋ ์ํฌํ๋ก์ฐ์ ๋๋ค. ์ ๊ธฐ์ ์ธ ๋ฆด๋ฆฌ์ค๊ฐ ์๋ ํ๋ก์ ํธ์ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
์ฃผ์ ๋ธ๋์น:
main: ํ๋ก๋์ ์ค๋น๊ฐ ์๋ฃ๋ ์ฝ๋๋ฅผ ๋ํ๋ ๋๋ค.develop: ๊ธฐ๋ฅ์ ํตํฉํ๊ณ ์๋ก์ด ๊ธฐ๋ฅ ๋ธ๋์น์ ๊ธฐ๋ฐ ์ญํ ์ ํฉ๋๋ค.feature/*: ์๋ก์ด ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๊ธฐ ์ํ ๋ธ๋์น์ ๋๋ค.release/*: ๋ฆด๋ฆฌ์ค๋ฅผ ์ค๋นํ๊ธฐ ์ํ ๋ธ๋์น์ ๋๋ค.hotfix/*: ํ๋ก๋์ ํ๊ฒฝ์ ๋ฒ๊ทธ๋ฅผ ์์ ํ๊ธฐ ์ํ ๋ธ๋์น์ ๋๋ค.
์๋ ๋ฐฉ์:
- ์๋ก์ด ๊ธฐ๋ฅ์
develop์์ ๋ธ๋์น๋ฉ๋๋ค. - ๋ฆด๋ฆฌ์ค๊ฐ ๊ณํ๋๋ฉด,
develop์์release๋ธ๋์น๊ฐ ์์ฑ๋ฉ๋๋ค. - ๋ฆด๋ฆฌ์ค์ ํน์ ํ ๋ฒ๊ทธ ์์ ์
release๋ธ๋์น์ ์ปค๋ฐ๋ฉ๋๋ค. release๋ธ๋์น๋main๊ณผdevelop์์ชฝ์ ๋ณํฉ๋ฉ๋๋ค.- ํซํฝ์ค๋
main์์ ๋ธ๋์น๋์ด ์์ ๋ ํmain๊ณผdevelop์์ชฝ์ ๋ณํฉ๋ฉ๋๋ค.
์ฅ์ :
- ๋ฆด๋ฆฌ์ค ๋ฐ ํซํฝ์ค ๊ด๋ฆฌ๋ฅผ ์ํ ์ ์ ์๋ ํ๋ก์ธ์ค.
- ์ ๊ธฐ์ ์ธ ๋ฆด๋ฆฌ์ค ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ง ํ๋ก์ ํธ์ ์ ํฉํฉ๋๋ค.
๋จ์ :
- ๋ฐฐ์ฐ๊ณ ๊ตฌํํ๊ธฐ ๋ณต์กํฉ๋๋ค.
- ๊ฐ๋จํ ํ๋ก์ ํธ๋ ์ง์์ ์ธ ๋ฐฐํฌ ํ๊ฒฝ์๋ ๊ณผํ ์ ์์ต๋๋ค.
- ๋ง์ ๋ธ๋์น ๊ด๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
์์: ๋ถ๊ธฐ๋ณ๋ก ์ฃผ์ ๋ฒ์ ์ ๋ฆด๋ฆฌ์คํ๋ ์ํฐํ๋ผ์ด์ฆ ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ๋ ํ์ฌ๋ Gitflow๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆด๋ฆฌ์ค ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ํ์ฌ ๋ฐ ํฅํ ๋ฆด๋ฆฌ์ค์ ํซํฝ์ค๊ฐ ์ ์ฉ๋๋๋ก ํ ์ ์์ต๋๋ค.
4. GitHub Flow
GitHub Flow๋ Gitflow์ ๋ ๊ฐ๋จํ ๋์์ผ๋ก, ์ง์์ ์ธ ๋ฐฐํฌ์ ์ต์ ํ๋์ด ์์ต๋๋ค. ๋น๋ฒํ ๋ฆด๋ฆฌ์ค์ ๊ฐ๋ฒผ์ด ๋ธ๋์น ๋ชจ๋ธ์ ์ค์ ์ ๋ก๋๋ค.
์๋ ๋ฐฉ์:
main๋ธ๋์น์ ๋ชจ๋ ๊ฒ์ ๋ฐฐํฌ ๊ฐ๋ฅํฉ๋๋ค.- ์๋ก์ด ์์
์ ์์ํ๋ ค๋ฉด
main์์ ์ค๋ช ์ ์ธ ์ด๋ฆ์ ๋ธ๋์น๋ฅผ ๋ง๋ญ๋๋ค. - ํด๋น ๋ธ๋์น์ ๋ก์ปฌ๋ก ์ปค๋ฐํ๊ณ ์ ๊ธฐ์ ์ผ๋ก ์๋ฒ์ ๋์ผํ ์ด๋ฆ์ ๋ธ๋์น์ ์์ ์ ํธ์ํฉ๋๋ค.
- ํผ๋๋ฐฑ์ด๋ ๋์์ด ํ์ํ๊ฑฐ๋ ๋ธ๋์น๊ฐ ์ค๋น๋์๋ค๊ณ ์๊ฐ๋๋ฉด ํ ๋ฆฌํ์คํธ๋ฅผ ์ฝ๋๋ค.
- ๋ค๋ฅธ ์ฌ๋์ด ํ ๋ฆฌํ์คํธ๋ฅผ ๊ฒํ ํ๊ณ ์น์ธํ๋ฉด
main์ ๋ณํฉํ ์ ์์ต๋๋ค. - ๋ณํฉ๋์ด
main์ ํธ์๋๋ฉด ์ฆ์ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
์ฅ์ :
- ๊ฐ๋จํ๊ณ ์ดํดํ๊ธฐ ์ฝ์ต๋๋ค.
- ์ง์์ ์ธ ๋ฐฐํฌ์ ๋งค์ฐ ์ ํฉํฉ๋๋ค.
- ๋น๋ฒํ ํตํฉ๊ณผ ํ ์คํธ๋ฅผ ์ฅ๋ คํฉ๋๋ค.
๋จ์ :
- ๊ฒฌ๊ณ ํ ํ ์คํธ ๋ฐ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ์ด ํ์ํฉ๋๋ค.
- ์๊ฒฉํ ๋ฆด๋ฆฌ์ค ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ง ํ๋ก์ ํธ์๋ ์ ํฉํ์ง ์์ ์ ์์ต๋๋ค.
์์: ์ง์์ ์ธ ๋ฐฐํฌ๋ฅผ ํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ํ์ GitHub Flow๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ๋ฅ๊ณผ ๋ฒ๊ทธ ์์ ์ ๋น ๋ฅด๊ฒ ๋ฐ๋ณตํ ์ ์์ต๋๋ค. ๊ทธ๋ค์ ๊ธฐ๋ฅ ๋ธ๋์น๋ฅผ ๋ง๋ค๊ณ , ๋ฆฌ๋ทฐ๋ฅผ ์ํด ํ ๋ฆฌํ์คํธ๋ฅผ ์ด๋ฉฐ, ํ ๋ฆฌํ์คํธ๊ฐ ๋ณํฉ๋์๋ง์ ํ๋ก๋์ ์ ๋ฐฐํฌํฉ๋๋ค.
5. GitLab Flow
GitLab Flow๋ ๊ธฐ๋ฅ ์ค์ฌ ๊ฐ๋ฐ๊ณผ ์ด์ ํธ๋ํน์ ๊ฒฐํฉํ Git ์ฌ์ฉ ๊ฐ์ด๋๋ผ์ธ์ ๋๋ค. GitHub Flow๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ ๋ฆด๋ฆฌ์ค ๋ฐ ํ๊ฒฝ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ ๋ง์ ๊ตฌ์กฐ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
์ฃผ์ ์์น:
- ๋ชจ๋ ๋ณ๊ฒฝ์ ๋ํด ๊ธฐ๋ฅ ๋ธ๋์น๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์ํด ๋จธ์ง ๋ฆฌํ์คํธ(ํ ๋ฆฌํ์คํธ)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ๋ค๋ฅธ ๋ธ๋์น์์ ๋ค๋ฅธ ํ๊ฒฝ์ผ๋ก ๋ฐฐํฌํฉ๋๋ค(์:
main์ ํ๋ก๋์ ,pre-production์ ์คํ ์ด์ง). - ๋ฆด๋ฆฌ์ค ์ค๋น๋ฅผ ์ํด ๋ฆด๋ฆฌ์ค ๋ธ๋์น๋ฅผ ์ฌ์ฉํฉ๋๋ค(์ ํ ์ฌํญ).
์ฅ์ :
- ์ ์ฐํ๊ณ ์ ์ ๊ฐ๋ฅํ ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ด์ ํธ๋ํน ์์คํ ๊ณผ ์ ํตํฉ๋ฉ๋๋ค.
- ์ฌ๋ฌ ํ๊ฒฝ ๋ฐ ๋ฆด๋ฆฌ์ค ์ ๋ต์ ์ง์ํฉ๋๋ค.
๋จ์ :
- GitHub Flow๋ณด๋ค ๋ ๋ณต์กํ ์ ์์ต๋๋ค.
- ํ๊ฒฝ ๋ฐ ๋ธ๋์น ์ ๋ต์ ๋ํ ์ ์คํ ๊ณํ์ด ํ์ํฉ๋๋ค.
์์: ๋๊ท๋ชจ ์ํํธ์จ์ด ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ๊ฐ๋ฐ ํ์ GitLab Flow๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ๋ฅ ๊ฐ๋ฐ, ์ฝ๋ ๋ฆฌ๋ทฐ, ์คํ ์ด์ง ๋ฐ ํ๋ก๋์ ํ๊ฒฝ์ผ๋ก์ ๋ฐฐํฌ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ๊ทธ๋ค์ ๋ฒ๊ทธ ๋ฐ ๊ธฐ๋ฅ ์์ฒญ์ ์ถ์ ํ๊ธฐ ์ํด ์ด์ ํธ๋ํน์ ์ฌ์ฉํ๊ณ , ์ฃผ์ ๋ฆด๋ฆฌ์ค๋ฅผ ์ค๋นํ ๋ ๋ฆด๋ฆฌ์ค ๋ธ๋์น๋ฅผ ๋ง๋ญ๋๋ค.
6. ํธ๋ ํฌ ๊ธฐ๋ฐ ๊ฐ๋ฐ(Trunk-Based Development)
ํธ๋ ํฌ ๊ธฐ๋ฐ ๊ฐ๋ฐ(TBD)์ ๊ฐ๋ฐ์๋ค์ด ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ๋ฅํ ํ ์์ฃผ, ์ด์์ ์ผ๋ก๋ ํ๋ฃจ์ ์ฌ๋ฌ ๋ฒ main ๋ธ๋์น('ํธ๋ ํฌ')์ ์ง์ ํตํฉํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ์ ๊ทผ ๋ฐฉ์์
๋๋ค. ์ด๋ ๊ธฐ๋ฅ์ด ์ค๋ ์ง์๋๋ ๋ธ๋์น์์ ๊ฐ๋ฐ๋๊ณ ๋ ์์ฃผ main์ ๋ค์ ๋ณํฉ๋๋ Gitflow์ ๊ฐ์ ๋ธ๋์นญ ๋ชจ๋ธ๊ณผ ๋์กฐ๋ฉ๋๋ค.
ํต์ฌ ์ค์ฒ ์ฌํญ:
- ๋น๋ฒํ ํตํฉ: ๊ฐ๋ฐ์๋ค์ ํ๋ฃจ์ ์ฌ๋ฌ ๋ฒ ์์ ์ ๋ณ๊ฒฝ ์ฌํญ์
main์ ์ปค๋ฐํฉ๋๋ค. - ์๊ณ ์ ์ง์ ์ธ ๋ณ๊ฒฝ: ๋ณ๊ฒฝ ์ฌํญ์ ์ถฉ๋ ์ํ์ ์ต์ํํ๊ธฐ ์ํด ์๊ณ ๊ด๋ฆฌ ๊ฐ๋ฅํ ์กฐ๊ฐ์ผ๋ก ๋๋ฉ๋๋ค.
- ๊ธฐ๋ฅ ํ ๊ธ: ์๋ก์ด ๊ธฐ๋ฅ์ ์ข
์ข
๊ธฐ๋ฅ ํ ๊ธ ๋ค์ ์จ๊ฒจ์ ธ ์์ด, ์ค๋น๊ฐ ๋ ๋๊น์ง ์ฌ์ฉ์์๊ฒ ๋
ธ์ถ๋์ง ์๊ณ
main์ ํตํฉ๋ ์ ์์ต๋๋ค. - ์๋ํ๋ ํ ์คํธ: ๋ณ๊ฒฝ ์ฌํญ์ด ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์์์ํค์ง ์๋๋ก ๋ณด์ฅํ๊ธฐ ์ํด ํฌ๊ด์ ์ธ ์๋ํ ํ ์คํธ๊ฐ ํ์์ ์ ๋๋ค.
- ์ง์์ ํตํฉ/์ง์์ ๋ฐฐํฌ(CI/CD): TBD๋ ์ฝ๋ ๋ณ๊ฒฝ์ ์๋์ผ๋ก ๋น๋, ํ ์คํธ ๋ฐ ๋ฐฐํฌํ๊ธฐ ์ํด CI/CD ํ์ดํ๋ผ์ธ์ ํฌ๊ฒ ์์กดํฉ๋๋ค.
์ฅ์ :
- ๋ ๋น ๋ฅธ ํผ๋๋ฐฑ ์ฃผ๊ธฐ: ๋น๋ฒํ ํตํฉ์ ํตํด ๊ฐ๋ฐ์๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ํผ๋๋ฐฑ์ ์ ์ํ๊ฒ ๋ฐ์ ์ ์์ต๋๋ค.
- ๋ณํฉ ์ถฉ๋ ๊ฐ์: ๋ณ๊ฒฝ ์ฌํญ์ ์์ฃผ ํตํฉํ๋ฉด ๋ณํฉ ์ถฉ๋์ ์ํ์ด ์ต์ํ๋ฉ๋๋ค.
- ํฅ์๋ ํ์ : TBD๋ ๊ฐ๋ฐ์๋ค์ด ๊ธด๋ฐํ๊ฒ ํ๋ ฅํ๊ณ ์์ฃผ ์ํตํ๋๋ก ์ฅ๋ คํฉ๋๋ค.
- ์์ฅ ์ถ์ ์๊ฐ ๋จ์ถ: ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํจ์ผ๋ก์จ TBD๋ ํ์ด ๊ธฐ๋ฅ๊ณผ ๋ฒ๊ทธ ์์ ์ ๋ ๋นจ๋ฆฌ ์ ๊ณตํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
๋จ์ :
- ๊ฐ๋ ฅํ ๊ท์จ ํ์: TBD๋ ๊ฐ๋ฐ์๋ค์ด ์๊ฒฉํ ์ฝ๋ฉ ํ์ค๊ณผ ํ ์คํธ ๊ดํ์ ์ค์ํด์ผ ํฉ๋๋ค.
- ๊ฒฌ๊ณ ํ ์๋ํ ์๊ตฌ: ํฌ๊ด์ ์ธ ์๋ํ ํ ์คํธ ๋ฐ CI/CD ํ์ดํ๋ผ์ธ์ด ํ์์ ์ ๋๋ค.
- ์ฑํ์ด ์ด๋ ค์ธ ์ ์์: ๋ธ๋์นญ ๋ชจ๋ธ์ ์ต์ํ ํ์๊ฒ TBD๋ก ์ ํํ๋ ๊ฒ์ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
์์: ๋ง์ ๋น ๋ฅด๊ฒ ์์ง์ด๋ ์น ํ์ฌ๋ค์ ๊ธฐ๋ฅ๊ณผ ๋ฒ๊ทธ ์์ ์ ์ ์ํ๊ฒ ๋ฐ๋ณตํ๊ธฐ ์ํด ํธ๋ ํฌ ๊ธฐ๋ฐ ๊ฐ๋ฐ์ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ค์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ ํ๊ฒ ํตํฉ๋๊ณ ๋ฐฐํฌ๋๋๋ก ๋ณด์ฅํ๊ธฐ ์ํด ์๋ํ๋ ํ ์คํธ์ ์ง์์ ์ธ ๋ฐฐํฌ์ ํฌ๊ฒ ์์กดํฉ๋๋ค.
์ฌ๋ฐ๋ฅธ ์ํฌํ๋ก์ฐ ์ ํํ๊ธฐ
์ต๊ณ ์ Git ์ํฌํ๋ก์ฐ๋ ๋ค์๊ณผ ๊ฐ์ ๋ค์ํ ์์ธ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค:
- ํ ๊ท๋ชจ: ์๊ท๋ชจ ํ์ ์ค์ ์ง์ค์ ์ํฌํ๋ก์ฐ๋ ๊ธฐ๋ฅ ๋ธ๋์น ์ํฌํ๋ก์ฐ์ ๊ฐ์ ๊ฐ๋จํ ์ํฌํ๋ก์ฐ๋ก๋ ์ถฉ๋ถํ ์ ์์ง๋ง, ๋๊ท๋ชจ ํ์ Gitflow๋ GitLab Flow์ ๊ฐ์ ๋ ๊ตฌ์กฐํ๋ ์ ๊ทผ ๋ฐฉ์์ ์ด์ ์ ๋๋ฆด ์ ์์ต๋๋ค.
- ํ๋ก์ ํธ ๋ณต์ก์ฑ: ์ฌ๋ฌ ๊ธฐ๋ฅ๊ณผ ๋ฆด๋ฆฌ์ค๊ฐ ์๋ ๋ณต์กํ ํ๋ก์ ํธ๋ ๋ ์ ๊ตํ ์ํฌํ๋ก์ฐ๊ฐ ํ์ํ ์ ์์ต๋๋ค.
- ๋ฆด๋ฆฌ์ค ์ฃผ๊ธฐ: ์ ๊ธฐ์ ์ธ ๋ฆด๋ฆฌ์ค๊ฐ ์๋ ํ๋ก์ ํธ๋ Gitflow์ ์ด์ ์ ๋๋ฆด ์ ์์ผ๋ฉฐ, ์ง์์ ์ธ ๋ฐฐํฌ๋ฅผ ํ๋ ํ๋ก์ ํธ๋ GitHub Flow๋ ํธ๋ ํฌ ๊ธฐ๋ฐ ๊ฐ๋ฐ์ ์ ํธํ ์ ์์ต๋๋ค.
- ํ ๊ฒฝํ: Git์ ์ฒ์ ์ฌ์ฉํ๋ ํ์ ๊ฐ๋จํ ์ํฌํ๋ก์ฐ๋ก ์์ํ์ฌ ๊ฒฝํ์ ์์ผ๋ฉด์ ์ ์ฐจ ๋ ๋ณต์กํ ์ ๊ทผ ๋ฐฉ์์ ์ฑํํ ์ ์์ต๋๋ค.
- ์กฐ์ง ๋ฌธํ: ์ํฌํ๋ก์ฐ๋ ์กฐ์ง์ ๋ฌธํ ๋ฐ ๊ฐ๋ฐ ๊ดํ๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค.
๋ค์์ ์ฃผ์ ๊ณ ๋ ค ์ฌํญ์ ์์ฝํ ํ์ ๋๋ค:
| ์ํฌํ๋ก์ฐ | ํ ๊ท๋ชจ | ํ๋ก์ ํธ ๋ณต์ก์ฑ | ๋ฆด๋ฆฌ์ค ์ฃผ๊ธฐ | ์ฃผ์ ์ฅ์ | ์ฃผ์ ๋จ์ |
|---|---|---|---|---|---|
| ์ค์ ์ง์ค์ ์ํฌํ๋ก์ฐ | ์๊ท๋ชจ | ๋ฎ์ | ๋ฌด๊ด | ๊ฐ๋จํ๊ณ ์ดํดํ๊ธฐ ์ฌ์ | ๋์ ์ถฉ๋ ์ํ, ๊ธฐ๋ฅ ๊ฒฉ๋ฆฌ ์์ |
| ๊ธฐ๋ฅ ๋ธ๋์น ์ํฌํ๋ก์ฐ | ์~์ค๊ท๋ชจ | ์ค๊ฐ | ๋ฌด๊ด | ์ข์ ๊ธฐ๋ฅ ๊ฒฉ๋ฆฌ, ๋ณ๋ ฌ ๊ฐ๋ฐ ๊ฐ๋ฅ | ์ค์ ์ง์ค์ ์ํฌํ๋ก์ฐ๋ณด๋ค ๋ณต์กํจ |
| Gitflow | ์ค~๋๊ท๋ชจ | ๋์ | ์ ๊ธฐ ๋ฆด๋ฆฌ์ค | ์ ์ ์๋ ๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค, ํจ๊ณผ์ ์ธ ํซํฝ์ค ๊ด๋ฆฌ | ๋ณต์กํจ, ๊ฐ๋จํ ํ๋ก์ ํธ์๋ ๊ณผํ ์ ์์ |
| GitHub Flow | ์~์ค๊ท๋ชจ | ์ค๊ฐ | ์ง์์ ๋ฐฐํฌ | ๊ฐ๋จํจ, ์ง์์ ๋ฐฐํฌ์ ์ ํฉ | ๊ฒฌ๊ณ ํ ํ ์คํธ ๋ฐ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ ํ์ |
| GitLab Flow | ์ค~๋๊ท๋ชจ | ๋์ | ์ ์ฐํจ | ์ ์ ๊ฐ๋ฅ, ์ด์ ํธ๋ํน๊ณผ ์ ํตํฉ๋จ | GitHub Flow๋ณด๋ค ๋ณต์กํ ์ ์์ |
| ํธ๋ ํฌ ๊ธฐ๋ฐ ๊ฐ๋ฐ | ๋ชจ๋ ๊ท๋ชจ | ๋ชจ๋ ๋ณต์ก์ฑ | ์ง์์ ๋ฐฐํฌ | ๋ ๋น ๋ฅธ ํผ๋๋ฐฑ, ๋ณํฉ ์ถฉ๋ ๊ฐ์, ํ์ ๊ฐ์ | ๊ฐ๋ ฅํ ๊ท์จ๊ณผ ๊ฒฌ๊ณ ํ ์๋ํ ํ์ |
Git ์ํฌํ๋ก์ฐ๋ฅผ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
์ ํํ ์ํฌํ๋ก์ฐ์ ๊ด๊ณ์์ด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ฉด ์ํํ๊ณ ํจ์จ์ ์ธ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๋ณด์ฅํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค:
- ์์ฃผ ์ปค๋ฐํ๊ธฐ: ๋ ์๊ณ ๋น๋ฒํ ์ปค๋ฐ์ ๋ณ๊ฒฝ ๋ด์ญ์ ์ดํดํ๊ณ ํ์ํ ๊ฒฝ์ฐ ์ด์ ์ํ๋ก ๋๋๋ฆฌ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
- ๋ช ํํ ์ปค๋ฐ ๋ฉ์์ง ์์ฑํ๊ธฐ: ์ปค๋ฐ ๋ฉ์์ง๋ ๋ณ๊ฒฝ ๋ชฉ์ ์ ๋ช ํํ๊ฒ ์ค๋ช ํด์ผ ํฉ๋๋ค. ์ผ๊ด๋ ํ์(์: ๋ช ๋ นํ: "๋ฒ๊ทธ ์์ ", "๊ธฐ๋ฅ ์ถ๊ฐ")์ ์ฌ์ฉํ์ธ์.
- ์๋ฏธ ์๋ ๋ธ๋์น ์ด๋ฆ ์ฌ์ฉํ๊ธฐ: ๋ธ๋์น ์ด๋ฆ์ ์ค๋ช
์ ์ด์ด์ผ ํ๋ฉฐ ๋ธ๋์น์ ๋ชฉ์ ์ ๋ฐ์ํด์ผ ํฉ๋๋ค(์:
feature/add-payment-method,bugfix/fix-login-issue). - ์ฝ๋ ๋ฆฌ๋ทฐ ์ํํ๊ธฐ: ์ฝ๋ ๋ฆฌ๋ทฐ๋ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ๊ณ , ์ฝ๋ ํ์ง์ ๊ฐ์ ํ๋ฉฐ, ํ์ ๊ฐ์ ์ง์์ ๊ณต์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ํ ์คํธ ์๋ํํ๊ธฐ: ์๋ํ๋ ํ ์คํธ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์์์ํค์ง ์๋๋ก ๋ณด์ฅํ๊ณ ์ฝ๋ ํ์ง์ ์ ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- Git ํธ์คํ ํ๋ซํผ ์ฌ์ฉํ๊ธฐ: GitHub, GitLab, Bitbucket๊ณผ ๊ฐ์ ํ๋ซํผ์ ํ ๋ฆฌํ์คํธ, ์ฝ๋ ๋ฆฌ๋ทฐ ๋๊ตฌ ๋ฐ CI/CD ํตํฉ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ์ํฌํ๋ก์ฐ ๋ฌธ์ํํ๊ธฐ: ์ ํํ ์ํฌํ๋ก์ฐ๋ฅผ ๋ช ํํ๊ฒ ๋ฌธ์ํํ๊ณ ๋ชจ๋ ํ์์๊ฒ ์ ๋ฌํ์ธ์.
- ํ ๊ต์กํ๊ธฐ: ํ์๋ค์ด Git๊ณผ ์ ํํ ์ํฌํ๋ก์ฐ๋ฅผ ์ดํดํ๊ณ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋๋ก ๊ต์ก๊ณผ ์๋ฃ๋ฅผ ์ ๊ณตํ์ธ์.
ํน์ ์๋๋ฆฌ์ค๋ฅผ ์ํ ์ค์ฉ์ ์ธ ํ
์๋๋ฆฌ์ค 1: ์คํ ์์ค ํ๋ก์ ํธ
์คํ ์์ค ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, ํ ๋ฆฌํ์คํธ๋ฅผ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ ๋ธ๋์น ์ํฌํ๋ก์ฐ๋ฅผ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ธฐ์ฌ์๋ค์ด ๋ฉ์ธ ์ฝ๋๋ฒ ์ด์ค์ ์ง์ ์ํฅ์ ์ฃผ์ง ์๊ณ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ถํ ์ ์์ต๋๋ค. ์ ์ง ๊ด๋ฆฌ์์ ์ฝ๋ ๋ฆฌ๋ทฐ๋ ํ์ง๊ณผ ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค.
์๋๋ฆฌ์ค 2: ์ฌ๋ฌ ์๊ฐ๋์ ๊ฑธ์ณ ๊ทผ๋ฌดํ๋ ์๊ฒฉ ํ
์ฌ๋ฌ ์๊ฐ๋์ ๊ฑธ์ณ ๋ถ์ฐ๋ ์๊ฒฉ ํ์ ๊ฒฝ์ฐ, GitLab Flow๋ ์ฐ์ํ ์๋ํ ํ ์คํธ๋ฅผ ๊ฐ์ถ ํธ๋ ํฌ ๊ธฐ๋ฐ ๊ฐ๋ฐ๊ณผ ๊ฐ์ ์ ์ ์๋ ์ํฌํ๋ก์ฐ๊ฐ ํ์์ ์ ๋๋ค. ์ง์ฐ์ ํผํ๊ธฐ ์ํด ๋ช ํํ ์ปค๋ฎค๋์ผ์ด์ ์ฑ๋๊ณผ ๋น๋๊ธฐ์ ์ฝ๋ ๋ฆฌ๋ทฐ ํ๋ก์ธ์ค๊ฐ ์ค์ํฉ๋๋ค.
์๋๋ฆฌ์ค 3: ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง๊ฐ ์ ํ์ ์ธ ๋ ๊ฑฐ์ ํ๋ก์ ํธ
ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง๊ฐ ์ ํ์ ์ธ ๋ ๊ฑฐ์ ํ๋ก์ ํธ์์ ์์ ํ ๋๋ ๊ธฐ๋ฅ ๋ธ๋์น ์ํฌํ๋ก์ฐ๊ฐ ์ข ์ข ๊ฐ์ฅ ์์ ํ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค. ๋ฒ๊ทธ ์ ์ ์ํ์ ์ต์ํํ๊ธฐ ์ํด ์ฒ ์ ํ ์๋ ํ ์คํธ์ ์ ์คํ ์ฝ๋ ๋ฆฌ๋ทฐ๊ฐ ํ์์ ์ ๋๋ค.
์๋๋ฆฌ์ค 4: ์ ์ํ ํ๋กํ ํ์ดํ
์ ์ํ ํ๋กํ ํ์ดํ์ ๊ฒฝ์ฐ, GitHub Flow๋ ์ฝ๊ฐ ์์ ๋ ์ค์ ์ง์ค์ ์ํฌํ๋ก์ฐ์ ๊ฐ์ ๋ ๊ฐ๋จํ ์ํฌํ๋ก์ฐ๋ก๋ ์ถฉ๋ถํ ์ ์์ต๋๋ค. ์๋์ ์คํ์ ์ค์ ์ ๋๋ฏ๋ก ์๊ฒฉํ ํ๋ก์ธ์ค๋ ํ์ํ์ง ์์ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
์ฌ๋ฐ๋ฅธ Git ์ํฌํ๋ก์ฐ๋ฅผ ์ ํํ๋ ๊ฒ์ ํจ๊ณผ์ ์ธ ํ์ ๊ณผ ์ฑ๊ณต์ ์ธ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๋ค์ํ ์ํฌํ๋ก์ฐ, ๊ทธ ์ฅ๋จ์ , ๊ทธ๋ฆฌ๊ณ ํ๊ณผ ํ๋ก์ ํธ์ ํน์ ์๊ตฌ ์ฌํญ์ ์ดํดํจ์ผ๋ก์จ ์ํฉ์ ๊ฐ์ฅ ์ ํฉํ ์ ๊ทผ ๋ฐฉ์์ ์ ํํ ์ ์์ต๋๋ค. ์ํฌํ๋ก์ฐ๋ ์๊ฒฉํ ๊ท์น์๊ฐ ์๋๋ผ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์กฐ์ ํ๊ณ ๊ฐ์ ํ ์ ์๋ ๊ฐ์ด๋๋ผ์ธ์ด๋ผ๋ ์ ์ ๊ธฐ์ตํ์ธ์. ์ ๊ธฐ์ ์ผ๋ก ์ํฌํ๋ก์ฐ๋ฅผ ํ๊ฐํ๊ณ ํ์์ ๋ฐ๋ผ ์กฐ์ ํ์ฌ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ์ต์ ํํ์ญ์์ค.
Git ์ํฌํ๋ก์ฐ๋ฅผ ๋ง์คํฐํ๋ฉด ๊ฐ๋ฐ ํ์ ๊ท๋ชจ, ์์น ๋๋ ํ๋ก์ ํธ ๋ณต์ก์ฑ์ ๊ด๊ณ์์ด ๋ ๋์ ์ํํธ์จ์ด๋ฅผ ๋ ๋น ๋ฅด๊ณ ํ๋ ฅ์ ์ผ๋ก ๊ตฌ์ถํ ์ ์์ต๋๋ค.