๊ฐ๋ฐํ์ ์ํ Git branch ์ ๋ต, ์ ๋ต ์์๊น?
๊ฐ๋ฐํ์ ์ํ Git branch ์ ๋ต, ์ ๋ต ์์๊น? ๊ด๋ จ
๊ตญ๋ด IT ๊ธฐ์ ์ ํ๊ตญ์ ๋์ด ์ธ๊ณ๋ฅผ ๋ฌด๋๋ก ํ ์ ๋๋ก ๋ฐ์ด๋ ๊ธฐ์ ๊ณผ ์์ด๋์ด๋ฅผ ์๋ํฉ๋๋ค. ์ด๋ค์ ๊ธฐ์ ๋ธ๋ก๊ทธ๋ฅผ ํตํด ์ด๋ฌํ ์ ๋ณด๋ฅผ ๊ณต๊ฐํ๊ณ ์์ต๋๋ค. ์์ฆIT๋ ๊ฐ ๊ธฐ์ ์ ํน์ ์๊ณ ์ ์ตํ ์ฝํ ์ธ ๋ฅผ ์๊ฐํ๋ ์๋ฆฌ์ฆ๋ฅผ ์ค๋นํ์ต๋๋ค. ์ด๋ค์ ์ด๋ป๊ฒ ์ฌ๊ณ ํ๊ณ , ์ด๋ค ๋ฐฉ์์ผ๋ก ์ผํ๊ณ ์์๊น์?
์ด๋ฒ ๊ธ์ ๊ตญ๋ด ๋ํ ์ด์ปค๋จธ์ค ๊ธฐ์ โSSGโ์ ๊ณตํต์๋น์ค๊ฐ๋ฐํ์์ โ์์ ๋ฐฐํฌ๋ฅผ ์ํ ๊น ๋ธ๋์น(Git branch) ์ ๋ตโ์ ์๊ฐํฉ๋๋ค.
์์ ๋ฐฐํฌ๋ฅผ ์ํ git branch
์ ๋ต
์๋ ํ์ธ์. SSG๊ณตํต์๋น์ค๊ฐ๋ฐํ์์ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋ด๋นํ๊ณ ์๋ ๊ถํ์ง์ ๋๋ค. ์ด๋ฒ ๊ธ์์๋ ์ ํฌ ํ์์ ์ด์ ์ค์ธ โ์์ ๋ฐฐํฌ๋ฅผ ์ํ Git branch ์ ๋ต'์ ์๊ฐํ๋ ค๊ณ ํฉ๋๋ค. ์ด์ ๋ํ ๋ด์ฉ์ ์ฐพ๋ ๋ถ๋ค์๊ฒ ์กฐ๊ธ์ด๋๋ง ๋์์ด ๋์์ผ๋ฉด ํฉ๋๋ค.
์ดํ โGit branch ์ ๋ตโ๊ณผ โbranch ์ ๋ตโ์ ๋์ผํ ์๋ฏธ๋ก ์ฌ์ฉํ๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ฐฐ๊ฒฝ
ํ์ฐฝ MSA(Microservices Architecture)๋ก์ ์ ํ์ ์งํํ๋ ์ค์ด์๋ ์ ํฌ ํ์ ์๋ก์ด branch ์ ๋ต์ด ํ์ํ ์ํฉ์ด์์ต๋๋ค. MSA๋ก ์ ํํ๋ฉด์ ๊ธฐ์กด ์ ๊ธฐ ๋ฐฐํฌ ๋ฐฉ์์ ๋ฒ๋ฆฌ๊ณ ์์ ๋ฐฐํฌ๋ฅผ ํ๊ธฐ๋ก ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์ด์์ฃ . Git-flow, Github-flow, Gitlab-flow๋ฅผ ํฌํจํด ์ฌ๋ฌ branch ์ ๋ต์ ์ดํด๋ณด์์ง๋ง, ํ ํ๊ฒฝ์ ๊ผญ ๋ง๋ branch ์ ๋ต์ ์์์ต๋๋ค. ๊ทธ๋์ ํ์ ์๊ตฌ ์ฌํญ๊ณผ ํ๊ฒฝ์ ๋ง๋ branch ์ ๋ต์ ์ง์ ๋ง๋ค๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
๋น๋ & ๋ฐฐํฌ ํ๊ฒฝ
๊ธ์ ์ดํด๋ฅผ ๋๊ธฐ ์ํด ํ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ฐ๋ตํ๊ฒ ์ค๋ช ํ๊ณ ๋์ด๊ฐ๊ฒ ์ต๋๋ค. ํ์ฌ ๋น๋&๋ฐฐํฌ๋ Bamboo๋ฅผ ์ด์ฉํ๊ณ ์๊ณ , Kubernetes๋ฅผ ์ฌ์ฉ ์ค์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ zone์ด๋ผ๊ณ ๋ถ๋ฅด๋ 4๊ฐ์ง ํ๊ฒฝ์ด ์์ต๋๋ค.
- Dev: ์ฃผ๋ก ๊ฐ๋ฐ์๋ค์ด ํ ์คํธ๋ฅผ ์งํํ๋ ํ๊ฒฝ
- QA: ์ฃผ๋ก ๊ธฐํ์์/QA๊ฐ ํ ์คํธ๋ฅผ ์งํํ๋ ํ๊ฒฝ
- stg: ์ค์ ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ณ ์ด์ํ๊ฒฝ๊ณผ ์ ์ฌํ ํ ์คํธ ํ๊ฒฝ
- prod: ์ค์ ์ด์ํ๊ฒฝ
๋ฒ์ ๊ด๋ฆฌ ์ ์ฅ์ ๋ฐ ์ฝ๋ ๋ฆฌ๋ทฐ ๋๊ตฌ๋ bitbucket์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
branch ์ ๋ต์ด ์ ํ์ํ๋
branch ์ ๋ต ์๋ฆฝ์ ์ํด ์๊ตฌ์ฌํญ์ ๋จผ์ ์ ๋ฆฌํ ํ์๊ฐ ์์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ branch ์ ๋ต์ ๋์ ํ๋ ค๊ณ ํ๋๊ฐ์ ๋ํ ๋ต์ด์์ฃ . branch ์ ๋ต์ โ์ด๊ฒ ์ข๋ค๋๋ผโ, โ๋จ๋ค์ด ์ด๋ ๊ฒ ํ๋๊น ์ฐ๋ฆฌ๋ ์ด๋ ๊ฒ ํ์โ๊ฐ ์๋ ํ์์ ์ํ ๊ฒ์ด์ด์ผ ํฉ๋๋ค. ์ฌ๋ฌ๋ถ๋ค๋ branch ์ ๋ต์ ๋ง๋ค์ด์ผ ํ๋ค๋ฉด, ์ฐ์ branch ์ ๋ต์ด ์ ํ์ํ์ง์ ๋ํด ๋จผ์ ๋ตํด๋ณด์ธ์. ์ฌ์ค ํ์ ์๋ค๋ฉด ๊ตณ์ด ๋์ ํ ํ์๋ ์์ผ๋ ๋ง์ด์ฃ .
์ ํฌ์ ์๊ตฌ์ฌํญ์ ํฌ๊ฒ ๋ ๊ฐ์ง์์ต๋๋ค.
- ์์ ๋ฐฐํฌ๋ฅผ ํ ์ ์์ด์ผ ํ๋ค.
- ์ด์ ๋ฐฐํฌ ์ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํ ์ ์์ด์ผ ํ๋ค.
์ด๋ ๊ฒ ์ ๊ณ ๋ณด๋๊น ์๊ตฌ์ฌํญ์ด ๊ฐ๋จํด ๋ณด์ ๋๋ค. ํ์ง๋ง ์ ๋ ๊ฐ์ง ์๊ตฌ์ฌํญ์ ๋ง์กฑํ๋ branch ์ ๋ต์ ๋จ๊ธฐ๊ฐ์ ๋ง๋ค๊ธฐ๋ ์ด๋ ค์ด ์ผ์ด์์ต๋๋ค. ์ด์ ์ ํฌ ํ์์ ์ด์ ์ค์ธ branch ์ข ๋ฅ๋ฅผ ๋จผ์ ์ค๋ช ํ๊ณ , branch๋ฅผ ๊ธฐ๋ฐํ ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ์๊ธฐํด ๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ธ๋์น ์ ๋ต ์๋ฆฝ ์ ๊ณ ๋ฏผํ๋ ์ด์์ ์ด์๋ฅผ ํด๊ฒฐํ ๋ฐฉ๋ฒ์ ๊ณต์ ํด ๋ณผ๊ฒ์.
ํ์ฌ branch ๋ชจ์ต
์๋๋ ์ ํฌ ํ์์ ์ด์ ์ค์ธ branch์ branch๊ฐ ๋ฐฐํฌ๋๋ zone์ ๊ฐ๋ตํ ํ์ํ ๊ทธ๋ฆผ์ ๋๋ค.
๊ทธ๋ฆผ1์ ๋์ ์๋ ๊ฒ์ฒ๋ผ ์ ํฌ ํ์์ ์ด์ ์ค์ธ ๋ธ๋์น๋ develop
, feature
, release
, feature-ltp
ํฌ๊ฒ 4๊ฐ์ง์
๋๋ค.
feature branch
์ค์ ๊ฐ๋ฐ์ ํ๊ธฐ ์ํด ์์ฑํ๋ branch๋ก release
branch๋ก๋ถํฐ ์์ฑํฉ๋๋ค. ๊ฐ๋ฐ ์์
์ ํน๋ณํ ์ด์ ๊ฐ ์๋ ํ feature
branch์์ ํด์ผ ํฉ๋๋ค.
git checkout release
git checkout -b feature/12345/jira-1
#
#feature branch๋ "feature/์ฌ๋ฒ/jira๋ฒํธ" ํํ๋ก ์์ฑํ๊ธฐ๋ก ์ฝ์๋์ด ์์ต๋๋ค.
- ์ผ์ ๊ธฐ๊ฐ๋ง ์กด์ฌํ๋ ๋ณด์กฐ branch์ ๋๋ค.
feature
branch๊ฐ ๋ฐฐํฌ๋๋ ํ๊ฒฝ์ local์ ๋๋ค.
develop
branch
dev/qa zone์ผ๋ก ๋ฐฐํฌ๋๋ branch์ ๋๋ค.
- ํ์์ ์ํด ์ญ์ /์ฌ์์ฑ ๋ ์ ์์ผ๋ฉฐ, ์ฌ์์ฑ ์์๋
release
branch๋ก๋ถํฐ ์์ฑํฉ๋๋ค. - feature branch merge๋ฅผ ํตํ ์์ค ๋ณ๊ฒฝ์ ๊ถ์ฅํ๋ ํ์ํ ๊ฒฝ์ฐ
develop
๋ธ๋์น๋ก ์ง์ ์์ ํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค. develop
branch๋ก merge ํ๋ ๊ฒ์ ์์ ์๊ฐ ์ง์ ์ํํฉ๋๋ค.- ์์ ์ฝ๋, ํน์ ๋ก์ง ํ์ธ์ ์ํ ํ ์คํธ ์ฝ๋๋ค๋ ์์ ๋กญ๊ฒ ์ถ๊ฐํ ์ ์์ต๋๋ค.
release
branch
- stg/prod zone์ผ๋ก ๋ฐฐํฌ๋๋ branch์ ๋๋ค.
- ํญ์ ์ ์ง๋๋ ๋ฉ์ธ branch์ ๋๋ค. ์ญ์ ํ๊ฑฐ๋ ์ฌ์์ฑํ์ง ์์ต๋๋ค.
- ํน์ํ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ PR์ ํตํ ์์ค ๋ณ๊ฒฝ๋ง ํ์ฉํฉ๋๋ค.
- ์ค์ ์๋น์ค๋๋ ๋ณ๊ฒฝ ์ฌํญ๋ง ํ์ฉํฉ๋๋ค.
feature-ltp
branch
- stg zone์ผ๋ก ๋ฐฐํฌ๋๋ branch์ ๋๋ค.
- ํ์์ ์ํด ์ญ์ /์ฌ์์ฑ ๋ ์ ์์ต๋๋ค.
release
branch๋ก๋ถํฐ ์์ฑ์ ๊ถ์ฅํ๋ ๋ฐ๋์ ๊ทธ๋์ผ ํ๋ ๊ฒ์ ์๋๋๋ค.
feature-ltp branch์ ๊ดํ ์๊ธฐ๋ ๋ค์์ ์ข ๋ ์์ธํ ๋ค๋ฃจ๊ฒ ์ต๋๋ค. ์ฐ์ ์ ํน์ํ ๋ชฉ์ ์ ๊ฐ์ง branch ์ ๋๋ง ๊ธฐ์ตํด ์ฃผ์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ฃผ์ํ ํน์ง์ ๋ฝ์์ ์์ฝํ๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
release
branch: ๋ฉ์ธ branch, PR์ ํตํ ์์ค ๋ณ๊ฒฝ๋ง ํ์ฉ, stg/prod zone ๋ฐฐํฌ, ์ค์๋น์ค์ฉ branchfeature
branch: ๋ณด์กฐ branch, ์ค์ ๊ฐ๋ฐ ์์ ์ ์งํํ๋ branchdevelop
branch: ๋ณด์กฐ branch, dev/qa zone ๋ฐฐํฌfeature-ltp
branch: ๋ณด์กฐ branch, stg zone ๋ฐฐํฌ, ํน์ํ ๋ชฉ์ ์ ๊ฐ์ง branch
branch๋ฅผ ์ด์ฉํ ์์ ๋ฐฐํฌ ํ๋ก์ธ์ค
์ด์ branch๊ฐ ์ด๋ค ๊ณผ์ ์ ๊ฑฐ์ณ ์ด์(prod zone)๊น์ง ๋ฐฐํฌ๋๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. feature branch ์์ฑ ๋ฐ local zone ํ์ธ
๊ฐ๋ฐํ ์ฌํญ์ด ์๊ธฐ๋ฉด ๊ฐ์ฅ ๋จผ์ feature branch๋ฅผ ์์ฑํฉ๋๋ค.
git checkout release
git checkout -b feature/12345/jira-1
#
# feature ๋ธ๋์น๋ "feature/์ฌ๋ฒ/jira๋ฒํธ" ํํ๋ก ์์ฑํ๊ธฐ๋ก ์ฝ์๋์ด ์์ต๋๋ค.
2, develop
branch merge ๋ฐ dev/qa zone ํ์ธ
feature branch์์ ๊ฐ๋ฐ ์์
์ ์๋ฃํ๊ณ ๋๋ฉด feature branch๋ฅผ develop
branch๋ก merge ํฉ๋๋ค.
git checkout develop
git merge feature/12345/jira-1
์ด๋ merge๋ ์์
์๊ฐ ์ง์ ํ๊ณ ์ถฉ๋์ด ๋๋ ๊ฒฝ์ฐ ์ถฉ๋ ํด๊ฒฐ ํ merge๋ฅผ ์๋ฃํฉ๋๋ค. develop
branch๋ก merge๊ฐ ๋๋ฉด ์๋์ผ๋ก ๋น๋๊ฐ ๋๊ณ ๋น๋ ๋ ๊ฒฐ๊ณผ๊ฐ dev/qa zone์ผ๋ก ๋ฐฐํฌ๋ฉ๋๋ค. ๋ฐฐํฌ ํ dev/qa zone์์ ํ
์คํธ๋ฅผ ์งํํฉ๋๋ค.
3. PR ์์ฒญ ๋ฐ ์ฝ๋ ๋ฆฌ๋ทฐ
dev/qa zone์์ ํ
์คํธ๋ฅผ ์๋ฃํ๋ฉด 1) stg zone์ ๊ฑฐ์ณ 2) ์ด์ ํ๊ฒฝ(prod zone)์ผ๋ก ๋ฐฐํฌํฉ๋๋ค. stg/prod zone ๋ฐฐํฌ์๋ release
branch๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด์์ ๋ฐ์๋๋ ์์ค์ด๋๋งํผ PR ํ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๊ฑฐ์ณ์ผ release
branch๋ก merge ํ ์ ์์ต๋๋ค. ์์ ์ธ๊ธ ๋๋ฆฐ ๊ฒ์ฒ๋ผ ์ ํฌ ํ์ bitbucket์ ํตํด PR ๋ฐ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์งํํ๊ณ ์์ต๋๋ค.
โฃ release
branch๋ก merge
์ฝ๋ ๋ฆฌ๋ทฐ๊ฐ ์๋ฃ๋๋ฉด bitbucket merge ๋ฒํผ์ด ํ์ฑํ๋๊ณ merge๋ฅผ ํ ์ ์์ต๋๋ค. (PR ์๋ release
branch ๋ณ๊ฒฝ์ ํ์ฉํ์ง ์์ผ๋ฉฐ release
branch merge๋ ๊ฐ๋ฐ์๊ฐ ์ง์ ํ์ง ์์ต๋๋ค.) merge ๋๋ฉด release
branch๋ ์๋์ผ๋ก ๋น๋๊ฐ ๋๊ณ stg zone์ผ๋ก ๋ฐฐํฌ๋ฉ๋๋ค.
โค stg zone ํ์ธ
stg zone๋ถํฐ๋ ์ด์ ๋ฐ์ดํฐ๋ก ํ ์คํธ๊ฐ ๊ฐ๋ฅํ๋ฉฐ ์ด์ ๋ฐฐํฌ ์ ์ต์ข ํ ์คํธ๋ฅผ ์งํํฉ๋๋ค. stg zone๊น์ง ํ ์คํธ๊ฐ ์๋ฃ๋์๋ค๋ฉด ์ด์ ์ด์ํ๊ฒฝ์ผ๋ก ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
โฅ ์ด์ ๋ฐฐํฌ
dev, qa, stg zone๊น์ง๋ ์๋ ๋น๋&์๋ ๋ฐฐํฌ์
๋๋ค. prod zone ๋ฐฐํฌ๋ ์๋์ผ๋ก ํ์ง ์๋๋ฐ์. ์๋ ๋ฐฐํฌ๋ก ์ธํ ํน์ ๋ชจ๋ฅผ ์ฌ๊ณ ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํจ์
๋๋ค. prod zone ๋ฐฐํฌ๋ ์ค์ ๋ก release
branch๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์๋๋ฉฐ, stg zone์์ ์์ฑ๋ ์ด๋ฏธ์ง๋ฅผ ๊ทธ๋๋ก prod zone์ผ๋ก ๋ณต์ฌํ๋ค๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค. prod zone ๋ฐฐํฌ๋ฅผ ๋ง์ง๋ง์ผ๋ก ์ ์ฒด ๋ฐฐํฌ ํ๋ก์ธ์ค๊ฐ ์๋ฃ๋์์ต๋๋ค.
์๊ตฌ์ฌํญ ์ ๊ฒ
์ ํฌ ํ์ด ์ํ๋ ์๊ตฌ์ฌํญ์ ๋ ๊ฐ์ง์์ต๋๋ค.
- ๋น์ ๊ธฐ ๋ฐฐํฌ๋ฅผ ํ ์ ์์ด์ผ ํ๋ค.
- ์ด์ ๋ฐฐํฌ ์ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํ ์ ์์ด์ผ ํ๋ค.
1. ๋น์ ๊ธฐ ๋ฐฐํฌ๋ฅผ ํ ์ ์์ด์ผ ํ๋ค.
๋น์ ๊ธฐ ๋ฐฐํฌ๋ฅผ ํ๊ธฐ ์ํด์๋ ์๋ก ๊ฐ์ ๋ณ๊ฒฝ ์ฌํญ์ด ๋
๋ฆฝ์ ์ด์ด์ผ ํ๊ณ , ๋์ ๋ฐฐํฌ์ ๋ค๋ฅธ ๋๊ตฐ๊ฐ์ ๋ณ๊ฒฝ ์ฌํญ์ด ๊ฐ์ด ๋ฐฐํฌ๋๋ ์ผ์ด ์์ด์ผ ํ์ต๋๋ค. ์ด ์ด์ ํด๊ฒฐ์ ์ํด ์ ํฌ๋ ๋จผ์ branch๋ฅผ ๋ถ๋ฆฌํ์ต๋๋ค. ๋ฐฐํฌ์ฉ branch์ธ release
branch์ ๊ฐ๋ฐ์ ์ํ feature branch๋ก ๋ง์ด์ฃ .
ํ์ง๋ง feature branch๋ก ๊ฐ์์ ๊ฐ๋ฐ ์์
์ ๋ถ๋ฆฌํ๋ค๊ณ ํด์, ๋ค๋ฅธ ๋๊ตฐ๊ฐ์ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐฐํฌ๋์ง ์๋๋ค๋ ๋ณด์ฅ์ ์์์ต๋๋ค. ์ด์ ๋ฐฐํฌ์ฉ release
branch๋ ํ๋์ด๊ธฐ ๋๋ฌธ์, ๋ค๋ฅธ ๋๊ตฐ๊ฐ์ feature๋ merge๊ฐ ๋์ด ์์ ์ ์๊ธฐ ๋๋ฌธ์ด์ฃ .
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ ํฌ๋ ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ ์ ํ์ต๋๋ค.
release
branch์ ๋ฐ์๋ ๋ด์ฉ์ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ์ด์์ ๋ฐฐํฌํ๊ณ ๊ธธ์ด๋ ์ต๋ ํ๋ฃจ๋ฅผ ๋๊ธฐ์ง ๋ง ๊ฒrelease
branch๋ฅผ ์ค/์ฅ๊ธฐ๊ฐ ํ ์คํธํด์ผ ํ๋ค๋ฉดrelease
branch๋ฅผ ์ฌ์ฉํ์ง ๋ง๊ณ feature-ltp branch๋ฅผ ์ฌ์ฉํ ๊ฒ
๊ท์น์ ์ ํ๋ฉด์ โ๊ทธ๋ผ์๋ ๋ค๋ฅธ ๋๊ตฐ๊ฐ์ ๋ณ๊ฒฝ ์ฌํญ์ด ๊ฐ์ด ๋ฐฐํฌ๋๋ ์ผ์ด ์๊ธธ ์ ์์ ๊ฒ ๊ฐ๋คโ๋ผ๋ ๊ณ ๋ฏผ์ ๊ณ์๋์์ต๋๋ค. ์ด์จ๋ ํ๋ฃจ๋ผ๋ ๊ธฐ๊ฐ ๋์ ์๋ก ๋ค๋ฅธ ๋๊ตฐ๊ฐ์ ๋ณ๊ฒฝ ์ฌํญ์ด ๋์์ ์์ ์ ์๊ธฐ ๋๋ฌธ์ด์์ฃ . ๊ณ ๋ฏผ ๋์ ์ ํฌ๊ฐ ๋ด๋ฆฐ ํด๋ต์ ์ฐ์ ํด๋ณด๊ณ ์ค์ ๋ก ๊ทธ๋ฐ ์ผ์ด ์์ฃผ ๋ฐ์ํ๋ค๋ฉด ๊ทธ ๋ ๋ฐฉ์์ ๋ค์ ์ฐพ์๋ณด์์์ต๋๋ค. ์ด๋ก ๊ณผ ์ค์ ๋ ๋ค๋ฅผ ์ ์๊ณ ์ ํฌ๊ฐ ๊ณ ๋ฏผํ๋ ๋ฌธ์ ์ ๊ฒฝ์ฐ, ์ค์ ๋ฐ์ํ์ ๋ ํด๊ฒฐํด๋ ํฐ ์ด์๊ฐ ๋ ์ผ์ด ์๋์๊ธฐ ๋๋ฌธ์ด์ฃ .
๊ฒฐ๋ก ๋ถํฐ ๋ง์๋๋ฆฌ๋ฉด ์ ํฌ๊ฐ ์ฐ๋ คํ๋ โrelease ๋ธ๋์น์ ์๋ก ๋ค๋ฅธ ์ฌ๋ฌ ๋ช ์ ๋ฐฐํฌ๋์ง ์์ ๋ณ๊ฒฝ ์ฌํญ์ด ์กด์ฌํ๋ ๊ฒฝ์ฐโ๋ ๊ฑฐ์ ์์์ต๋๋ค. ์คํ๋ ค ์์ ๋ฐฐํฌ๋ฅผ ์งํํ ์ ์๋ค ๋ณด๋, ๋ฐฐํฌ๋์ง ์์ ์์ค๊ฐ ๋จธ๋ฌผ๋ฌ ์๋ ์๊ฐ์ด ์ ์๊ธฐ ๋๋ฌธ์ด์ฃ .
2. ์ฝ๋ ๋ฆฌ๋ทฐ
์ฝ๋ ๋ฆฌ๋ทฐ์ ๋ํด ๊ณ ๋ฏผ๋๋ ๋ถ๋ถ์ ์๋์ ๋ ๊ฐ์ง์์ต๋๋ค.
- ์ธ์ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํ ๊ฒ์ธ๊ฐ?
- ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐฐํฌ ํ๋ก์ธ์ค์ ์์ฐ์ค๋ฝ๊ฒ ๋ น์๋ค๊ฒ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น?
branch์ ์ข
๋ฅ๊ฐ ์์ ํ ์ ํด์ง๊ธฐ ์ ์๋ ์ด๋ค branch๋ก merge ํ๊ธฐ ์ (์ฆ ์ด๋ ์์ ์)์ ๋ฆฌ๋ทฐ๋ฅผ ํ ๊ฒ์ด๋์ ๋ํ ๊ณ ๋ฏผ์ด ๋ง์์ต๋๋ค. ๊ทธ๋ฌ๋ค branch์ ์ข
๋ฅ์ ์ฉ๋๊ฐ ์ ํด์ง๋ฉด์ ์์ฐ์ค๋ฝ๊ฒ 1๋ฒ์ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค. release
branch๊ฐ ์ค์ ์๋น์ค๋๋ branch์ด๋ฏ๋ก, release
branch๋ก merge ํ๊ธฐ ์ ์ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํ๋ฉด ๋๋ ๊ฑฐ์์ฃ .
๋ ๋ฒ์งธ ๋ฌธ์ ๋ bitbucket์ ํ์ฉํด์ ํด๊ฒฐํ์ต๋๋ค. bitbucket์๋ branch ๋ณ๋ก ๊ถํ์ ์ค ์ ์๋ ๊ธฐ๋ฅ๊ณผ Merge ๊ฐ๋ฅํ ์กฐ๊ฑด์ ๋ถ์ฌํ ์ ์๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ์ ๋ ๊ธฐ๋ฅ์ ํ์ฉํ๋ฉด PR์ ์ฌ๋ฆฐ ํ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์๋ฃํด์ผ, release
branch๋ก merge ๋ ์ ์๋๋ก ๊ฐ์ ํ ์ ์์ต๋๋ค. ์ฝ๋ ๋ฆฌ๋ทฐ๊ฐ ๊ฐ์ ๋๊ธฐ ๋๋ฌธ์ ๋ฐฐํฌ ํ๋ก์ธ์ค์ ์ฝ๋ ๋ฆฌ๋ทฐ ๊ณผ์ ์ ํฌํจ์ํฌ ์ ์์์ต๋๋ค.
๋ ๋ค๋ฅธ ๊ณ ๋ฏผ๊ณผ ํด๊ฒฐ
develop
branch
feature branch๋ release
branch๋ก๋ถํฐ ์์ฑํฉ๋๋ค. develop
branch๋ release
branch๋ก๋ถํฐ ์์ฑ๋์ฃ . feature branch๊ฐ develop
branch์์ ์์ฑ๋ ๊ฒ ์๋๋ค ๋ณด๋, develop
branch๋ก merge๋ฅผ ํ๋ค ๋ณด๋ฉด develop
branch์ history๋ ์์๋ณด๊ธฐ ํ๋ค๊ฒ ๋๊ณ , ์์ค ๋ณํฉ ์ ์ถฉ๋๋ ์์ฃผ ๋ฐ์ํ์ง ์์๊น ํ๋ ์ฐ๋ ค๊ฐ ์์์ต๋๋ค.
์๋๋ ํ์ฌ develop
branch์ commit ๊ทธ๋ํ์
๋๋ค.
commit history์ ์ผ๋ถ๋ถ์ธ๋ฐ๋ ํ๋์ history๊ฐ ์๋ง์ธ ๊ฑธ ์ ์ ์์ต๋๋ค. ์ค์ ์ถฉ๋๋ ์ข
์ข
๋ฐ์ํ๊ณ ์๊ณ ์. ์ฐ๋ คํ๋ ํ์์ด ๋ฐ์ํ๊ณ ์์ต๋๋ค. history๊ฐ ์๋ง์ธ ๊ฒ์ ์์ ๋ฌธ์ ์์ง๋ง, ์ฆ์ ์ถฉ๋์ ๊ฐ๋ฐ ์์ฐ์ฑ์ ๋จ์ด๋จ๋ฆด ์ ์๊ธฐ ๋๋ฌธ์ ์ค์ํ ๋ฌธ์ ์์ต๋๋ค. ์ ํฌ๊ฐ ๊ณ ๋ฏผ ๋์ ๋ด๋ฆฐ ๊ฒฐ๋ก ์ ๋ฌธ์ ๊ฐ ์ฌํด์ง๋ฉด โdevelop
branchโ๋ฅผ ์๋ก ๋ง๋ค์์์ต๋๋ค.
์ด์ฐจํผ ์ ํฌ์๊ฒ ์ค์ํ ๊ฒ์ release
branch์ด๊ณ develop
branch๋ โ๊ทธ๋ ๊ฒ๊น์ง ์ค์ํ์ง ์๋ค.โ, โ๋ค์ ๋ง๋ ๋ค๊ณ ํฐ ๋ฌธ์ ๊ฐ ์๊ธฐ์ง๋ ์์ ๊ฒ์ด๋ค.โ๋ผ๊ณ ์๊ฐํ์ต๋๋ค. ๋ฌธ์ ๊ฐ ๋ ๋งํ ์ํฉ์ develop
branch๋ก ํ
์คํธ ์ค์ธ ๋๊ตฐ๊ฐ์ ์ฝ๋๊ฐ ์ญ์ ๋ ์๋ ์๋ค๋ ๊ฒ์ด์์ฃ . ํ์ง๋ง ์ด ๋ถ๋ถ๋ ์ค์์ ํฐ ๋ฌธ์ ๊ฐ ์ ๋๋ ๊ฒ์ด develop
branch ์ฌ์์ฑ์ ํ๊ธฐ ์ ์ 1์ฐจ์ ์ผ๋ก ํ ๋ด ๊ณต์ ํ๋ฉด ๋๊ณ , feature branch๋ ์ฌ์ ํ ์๊ธฐ ๋๋ฌธ์ develop
branch ์ฌ์์ฑ ํ feature branch๋ฅผ ๋ค์ merge ํ๋ฉด ๋๋ ์ผ์ด์์ต๋๋ค.
๊ทธ๋ ๊ฒ ๊ฒฐ์ ํ๊ณ ์ด์ํ๋ ์ง๊ธ๊น์ง ๋๊ตฐ๊ฐ์ ์ฝ๋๊ฐ ์ญ์ ๋ ๊ฒฝ์ฐ๋ ์์์ต๋๋ค. ๊ฒฐ์ ์ ์ผ๋ก develop
branch๋ฅผ ์ฌ์์ฑํ๋ ์ผ์ด ์๊ฐ๋ณด๋ค ์์ฃผ ๋ฐ์ํ์ง ์๊ณ ์์ต๋๋ค.
release
branch
๋ธ๋์น ์ ๋ต ๋ง๋ค ๋น์ release
branch์ ๋ํ ์ฐ๋ ค๋ ํฌ๊ฒ ๋ ๊ฐ์ง์์ต๋๋ค.
- ์ฒซ์งธ, ์์ค ์ถฉ๋์ด ๋ฐ์ํ๋ ์ํฉ์ด ์์ฃผ ์ค์ง ์์๊น?
- ๋์งธ, ์์ค ๋ณํฉ ์ ์ฑ ์ ๋ฌด์์ผ๋ก ๊ฐ์ ธ๊ฐ๊น?
์๋ก ๊ฐ์ ์์ค๋ฅผ ์์ ํ๊ฒ ๋๋ ๊ฒฝ์ฐ release
branch๋ก ์์ค ๋ณํฉ ์ ์ถฉ๋์ด ๋ฐ์ํ ์ ์์ต๋๋ค. release
branch๋ ์ด์์ ๋ฐฐํฌ๋๋ ์์ค๋ค์
๋๋ค. ์ถฉ๋์ ํด๊ฒฐํ๋ ๊ณผ์ ์์ ์์ค๋ฅผ ์๋ชป merge ํ๋ ์ผ์ด ์๊ธด๋ค๋ฉด ์ฅ์ ๋ก ์ด์ด์ง ์๋ ์์ต๋๋ค. ์ถฉ๋์ด ์์ฃผ ๋๊ฒ ๋๋ฉด merge ๊ณผ์ ์์ ๊ทธ๋ฌํ ์ค์๊ฐ ๋ฐ์ํ ํ๋ฅ ์ด ์ฌ๋ผ๊ฐ๊ฒ ๋์ฃ .
์ฒซ ๋ฒ์งธ ๊ณ ๋ฏผ์ ๋ํ ํด๊ฒฐ์ ์ฐ์ ์ ์ฉํด ๋ณด์์์ต๋๋ค. (์ฐ์ ์ ์ฉํด ๋ณด์๊ฐ ์ข ๋ง๋ค์.) โ์ค์ ๋ก ์ฐ๋ฆฌ๊ฐ ์๊ฐํ๋ ๊ฒ๋งํผ ์์ฃผ ์ถฉ๋์ด ๋ฐ์ํ์ง ์์ ์๋ ์๋ค.โ, โํ์๊ณผ bitbucket์ ๋ฏฟ์ด๋ณด์.โ, โ์ฆ์ ์ถฉ๋๋ก ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ๊ทธ๋ ํด๊ฒฐ์ฑ
์ ๊น๊ฒ ๊ณ ๋ฏผํด ๋ณด์โ๋ผ๋ ์๊ฐ์ด์์ต๋๋ค. ์ง๊ธ๊น์ง ์ด์ํ๋ฉด์ release
branch๋ก merge๊ฐ ์๋ชป๋์ด ๋ฌธ์ ๊ฐ ์๊ธด ๊ฒฝ์ฐ๊ฐ ์๋ ๊ฒ์ ๋ณด๋ฉด, ์ณ์ ์ ํ์ด์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ฐ ์ผ์ด ์ ์๊ธฐ์ง ์๋์ง ์๊ฐํด ๋ณด๋ฉด ์์ ๋ฐฐํฌ์ด๊ธฐ ๋๋ฌธ์, ์คํ๋ ค ๋ ๊ด์ฐฎ์ ๊ฒ ๊ฐ์ต๋๋ค. ์์ ๋ฐฐํฌ ๋๋ฌธ์ ๊ฑฑ์ ํ๋ ์ผ์ด ์ฌ์ค์ ์์ ๋ฐฐํฌ๋ก ์ธํด์ ๋ ์๊ธฐ์ง ์๊ณ ์๋ ๊ฒ์ด์ฃ .
๋ ๋ฒ์งธ ๊ณ ๋ฏผ์ ์์ค ๋ณํฉ ์ ์ฑ
์ merge๋ก ํ ๊ฑด์ง rebase๋ก ํ ๊ฑด์ง์์ต๋๋ค. ์ด ๊ณ ๋ฏผ๋ ์ฐ์ ์ merge๋ก ๊ฒฐ์ ํ๊ณ , release
branch์ history๊ฐ ์ด๋ป๊ฒ ์๊ธฐ๋์ง๋ฅผ ๋ณด๊ณ ์์ ํด ๊ฐ๊ธฐ๋ก ํ์ต๋๋ค. merge๋ก ์ ์ฑ
์ ์ ํ๊ณ ์ด๋ ์ ๋ ์๊ฐ์ด ํ๋ฅธ ํ, release
branch history๋ฅผ ๋ณด๋ ๋ฌธ์ ๊ฐ ๋ ๊ฐ์ง ์์์ต๋๋ค. โ history๊ฐ ๊น๋ํ์ง ์์ ์ , โก ๋ถํ์ํ ์ปค๋ฐ์ด ๋ง์ ์ ์ด์์ต๋๋ค.
merge๋ก ์ด์ํ ๋น์ release
branch์ commit history์
๋๋ค.
develop
branch์ history๋ณด๋ค๋ ๋ซ์ง๋ง, ๊ทธ๋ผ์๋ ๊น๋ํ๋ค๋ ์๊ฐ์ ๋ค์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ฏธ ์๋ commit๋ค์ด ๊ฝค ๋ง์์ต๋๋ค. ์ด์์ ์ผ๋ก๋ ํ๋์ feature์ ํ๋์ commit์ด ์์ฑ๋์ด์ผ ํ์ง๋ง, ํ๋์ feature์ ํ๋์ commit์ ๋ง๋ ๋ค๋ ๊ฒ ์๊ฐ๋ณด๋ค ์ฝ์ง ์์ต๋๋ค. ์ฝ๋ ๋ฆฌ๋ทฐ ๋จ๊ณ์์ ์ฝ๋๋ฅผ ์์ ํด์ผ ํ๊ฑฐ๋, ๊ทธ ์ธ ์๊ฐ์ง ๋ชปํ ์์ ์ ์ฝ๋๋ฅผ ์์ ํด์ผ ํ๋ ๊ฒฝ์ฐ๋ ์ธ์ ๋ ๋ฐ์ํ ์ ์์ผ๋ ๋ง์ด์ฃ .๊ทธ๋์ ์ ํฌ๋ ์์ค ๋ณํฉ ์ ์ฑ ์ merge์์ squash + rabase๋ก ๋ณ๊ฒฝํ์ต๋๋ค. (์์ค ๋ณํฉ ์ ์ฑ ์ bitbucket ์ค์ ์์ ์ฝ๊ฒ ๋ณ๊ฒฝ ๊ฐ๋ฅํฉ๋๋ค.)
์์ค ๋ณํฉ ์ ์ฑ ๋ณ๊ฒฝ ํ commit ๊ทธ๋ํ๋ ์๋์ ๊ฐ์ต๋๋ค.
์ ํฌ๊ฐ ์ํ๋ ๋๋ก ๊น๋ํ history ๊ทธ๋ํ๊ฐ ๋ง๋ค์ด์ก๊ณ ์ดํ๋ก๋ ์ชฝ ์ด๋ฐ ๋ชจ์ต์ ์ ์งํ๊ณ ์์ต๋๋ค.
๋ง์น๋ฉฐ
์ง๊ธ๊น์ง ์ ํฌ ํ์์ ์ด์ ์ค์ธ ์์ ๋ฐฐํฌ๋ฅผ ์ํ Git branch ์ ๋ต์ ์๊ฐํด ๋ดค์ต๋๋ค. ์ฌ์ค ๋ธ๋์น ์ ๋ต์๋ ์ ๋ต์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ ๋ต์ ๋ง๋ค ๋น์์๋ ์ด๊ฒ ๋ง์๊น, ์ ๊ฒ ๋ง์๊น ์ ๋ต์ ์ฐพ๊ณ ์ ๋ง์ด ๊ณ ๋ฏผํ๊ณ ์. ๊ฒฐ๊ตญ ์ค์ํ ๊ฒ์ ์ ๋ต์ด ์๋๋ผ ์ฐ๋ฆฌ์ ์ํฉ์์ ์ต์ ์ด ๋ฌด์์ธ์ง๋ฅผ ์ฐพ๋ ๊ฒ์ด์์ฃ . ์ ํฌ๋ ๊ณ์ํด์ ๋ถ์กฑํ ๋ถ๋ถ์ ์์ ํด ๋๊ฐ๊ณ ์๋ ์ค์ ๋๋ค.
์ฌ๋ฌ๋ถ๋ branch ์ ๋ต์ ๋ง๋ค ๋ ์ ๋ต์ด ์๋, ํ ์ํฉ์ ๋ง๋ ์ต์ ์ด ๋ฌด์์ธ์ง๋ฅผ ๊ณ ๋ฏผํด ๋ณด์ ๋ค๋ฉด ํ์ ๊ผญ ๋ง๋ branch ์ ๋ต์ ๋ง๋ค ์ ์์ ๊ฑฐ๋ผ ์๊ฐํฉ๋๋ค.