velog์์ ๋ณด๋ ๊ฒ ๋ ๊ฐ๋ ์ฑ์ด ์ข์ต๋๋ค :)
๊นํ๋ธ๋ฅผ ์ด์ฉํ ํ ํ๋ก์ ํธ์์ ๋ธ๋์น๋ฅผ ๊ท์น ์์ด ๋ฌด๋ถ๋ณํ๊ฒ ๋ง๋ค๋ฉด
ํ์คํ ๋ฆฌ๊ฐ ์์ฃผ ๋ณต์กํด์ง๊ณ , ํ์ ๊ฐ์ ์ํต๋ ํ๋ค์ด์ง๋ค.
์ค๋์ ๋ธ๋์น ๊ด๋ฆฌ ์ ๋ต ์ค Git Flow์ ๋ํด ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค.
Git Flow
๋ง ๊ทธ๋๋ก flow, ํ๋ฆ์ด๋ค.
์๊ฐ์ ํ๋ฆ์ ๋ฐ๋ผ ๊ฐ ๋ธ๋์น๋ค์ด ์ด๋ป๊ฒ ์ํธ์์ฉํ์ฌ ๋ฉ์ธ ๋ธ๋์น๊ฐ ์์ฑ๋๋์ง์ ์ง์คํด๋ณด๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
๊ตฌ์ฑ ๋ธ๋์น
- main
๋ฐฐํฌ(์ ํ์ผ๋ก ์ถ์๋๋)ํ๋ ์ฃผ ๋ธ๋์น์ด๋ค.
ํญ์ ๋ฐฐํฌ ๊ฐ๋ฅํ ์์ ์ ์ธ ์ํ๋ฅผ ์ ์งํด์ผ ํ๋ค. - develop
๋ค์ ์ถ์ ๋ฒ์ ์ ๋ง๋ค๊ธฐ ์ํด ํ์๋ค์ด ๋ณ๊ฒฝ ๋ด์ฉ์ ๋ชจ์ผ๋ ๊ฐ๋ฐ ๋ธ๋์น์ด๋ค.
์ ๊ธฐ๋ฅ(feature)๋ค๊ณผ ๋ฒ๊ทธ ์์ (release/hotfix)๋ค์ด ๋ชจ์ด๋ ๋ธ๋์น์ด๋ค. - feature
์๋ก์ด ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋ ๋ธ๋์น์ด๋ค.
๋ ๋ฆฝ์ ์ธ ์์ ์ ์ํ ๋ธ๋์น๋ก, develop ๋ธ๋์น์์ ์์ํ๋ค.
๊ธฐ๋ฅ ๊ฐ๋ฐ์ด ์์ฑ๋๋ฉด, ๋์ค์ develop ๋ธ๋์น๋ก ๋ณํฉํ๋ค.- feature/user, feature/payment ์์ผ๋ก feature์์ ๋ช ์ํ๋ฉด ์ข๋ค.
- release
์ด๋ฒ์ ์ถ์ํ ๋ฒ์ ์ ์ค๋นํ๋ ๋ธ๋์น์ด๋ค.
develop ๋ธ๋์น์์ ๋ชจ๋ feature ๋ธ๋์น๊ฐ ๋ณํฉ๋๋ฉด develop ๋ธ๋์น๋ก๋ถํฐ release ๋ธ๋์น๋ฅผ ์์ฑํ์ฌ ํ ์คํธ์ ๋ฒ๊ทธ ์์ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ค.
ํ ์คํธ์ ๋ฒ๊ทธ ์์ ์ ๋ง์น๊ณ release ๋ธ๋์น๊ฐ ์์ ํ๋๋ฉด main, develop ๋ธ๋์น์ ๋ณํฉํ๋ค. - hotfix
๋ฐฐํฌ(์ถ์)ํ ๋ฒ์ ์์ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๋ฉด ๊ธด๊ธ ์์ ์ด ํ์ํ๋ค.
์ด๋, main ๋ธ๋์น๋ก๋ถํฐ hotfix ๋ธ๋์น๋ฅผ ์์ฑํ๋ค.
๋น ๋ฅด๊ฒ ๋ฒ๊ทธ๋ฅผ ์์ ํ ํ, main๊ณผ develop ๋ธ๋์น์ ๋ณํฉํ๋ค.
๊ฐ์ธ์ ์ธ ์๊ฒฌ์ผ๋ก๋ main, develop, feature ๋ธ๋์น๋ฅผ ๊ธฐ๋ณธ์ผ๋ก
ํ์ ํน์ฑ๊ณผ ํ์์ ๋ฐ๋ผ release์ hotfix ๋ธ๋์น๋ฅผ ์ต์ ์ผ๋ก ์ถ๊ฐํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
์๋๋ฆฌ์ค
๊น ํ๋ก์ฐ๋ฅผ ์ค๋ช ํ๋ ๊ธ๋ค ์ค์์ ์์ฃผ ์ ๋ช ํ ๊ทธ๋ฆผ์ด๋ค. ์ด ๊ทธ๋ฆผ์ ์ฐธ๊ณ ํด ์๋๋ฆฌ์ค๋ฅผ ๊ทธ๋ ค๋ณด์.
์ด๋ฏธ์ง ์ถ์ฒ: ๐
- ๋ฆฌํฌ์งํฐ๋ฆฌ๋ฅผ ์์ฑํ๋ค. ํจ๊ป main ๋ธ๋์น 0.1์ด ์์ฑ๋๋ค.
- main 0.1 ๋ธ๋์น๋ก๋ถํฐ develop ๋ธ๋์น๊ฐ ์์ฑ๋๋ค. ํ์์ ๋ฐ๋ผ ์ด๊ธฐํ ์์ ์ ํ๋ค.
- ๋ณธ๊ฒฉ์ ์ธ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ํด develop ๋ธ๋์น๋ก๋ถํฐ feature ๋ธ๋์น๋ค์ ๋ง๋ ๋ค.
- feature ๋ธ๋์น์์ ์์ ์ ํ๋ฉฐ ์์ฑ ๋๋ฉด develop ๋ธ๋์น์ ๋ณํฉํ๊ธฐ๋ ํ๋ฉฐ ์ ๋ฐ์ดํธ ํด๊ฐ๋ค.
- ์ด๋ฒ ์ถ์๋ฅผ ์ํด ํ์ํ ๊ธฐ๋ฅ๋ค(๊ทธ๋ฆผ์ฃ๋ Major feature for next release)์ด ๋ชจ๋ develop์ ๋ณํฉ๋๋ฉด develop ๋ธ๋์น๋ก๋ถํฐ release ๋ธ๋์น๋ฅผ ๋ง๋ ๋ค.
- release ๋ธ๋์น์์๋ ํ ์คํธ๋ฅผ ํ๋ฉฐ ๋ฒ๊ทธ๋ฅผ ์์ ํ๋ค. ์ด๋ ๊ฒ ์์ฑ๋ ๋ฒ์ ์ develop๊ณผ main ๋ธ๋์น์ ๋ณํฉํ๋ฉฐ ์ ์ ์ถ์ ๋ฒ์ main 1.0์ด ๋๋ค.
์ค๊ฐ ์ค๊ฐ hotfix๋ main์์ ์ถฉ๋์ด ๋๋ฉด ์ธ์ ๋ ์ง ์์ฑ๋์ด ํด๊ฒฐ ํ develop๊ณผ main์ ๋ณํฉ๋๋ค.
๊ฝค๋ ์ฒด๊ณ์ ์ธ ๋ฐฉ๋ฒ์ด๋ค.
๊ทธ๋ฌ๋ ๊น ํ๋ก์ฐ๋ฅผ ๋ชจ๋ ํ๋ก์ ํธ์ ์ ์ฉํ ํ์๋ ์๊ณ ,
ํ์ ๋ชฉ์ ์ ๋ง๊ฒ ์ ๋ณํํ๋ฉด ๋๋ค.
๋ค๋ง ์ธ์ ๋ ์ง ์ง์ผ์ผํ ์ ์ ์ปค๋ฐ์ ๋จ๊ธฐ๋ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค.
"ํ๋์ ํฐ์ผ์ ๋๋๋ก ํ๋์ ์ปค๋ฐ์ผ๋ก ํ๋ค."
์ด๋ ํฐ์ผ์ ํ๋์ ๊ฐ๋ฐ ์์
๋๋ ์ด์๋ฅผ ๋งํ๋ค. ์ฆ, ํ ์์
์ ์ฌ๋ฌ ์ปค๋ฐ์ผ๋ก ๋ณต์กํ๊ฒ ๋๋์ด ์ฌ๋ฆฌ์ง ๋ง๋ ๋ง์ด๋ค.
์์ ๊ท๋ชจ์ ํ์ด๋ผ๋ฉด ํ ๋ฆฌํฌ์งํฐ๋ฆฌ์์ ํจ๊ป ์์
ํ๋ฉด ๋๊ฒ ์ง๋ง
์ด๋ ์ ๋ ๊ท๋ชจ ์๋ ํ๋ก์ ํธ๋ผ๋ฉด ๋ ๊ฐ์ ๋ฆฌํฌ์งํฐ๋ฆฌ๋ฅผ ์ฐ๊ธฐ๋ ํ๋ค.
์ฐ์ํํ์ ๋ค์ ๊ธฐ์ ๋ธ๋ก๊ทธ์ ์ฐ์ํํ ํฌ์ฝ์ค ๋ฌ๋กํ์ ๊ธฐ์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ๋ด๊ฐ ์ง์ ์จ๋ณผ๋งํ ๋ฐฉ์์ผ๋ก ์ ๋ฆฌํด๋ณด์๋ค.
ํ ํ์ ์์์ Git Flow ์ ์ฉ
๊ฐ๋ฐ ํ์ ๊ณผ ์์ค ์ฝ๋ ๊ด๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ํ๊ธฐ ์ํด์ ๋ ๊ฐ์ ๋ฆฌํฌ์งํฐ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค. ๊ฐ ๋ฆฌํฌ์งํฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- Upstream Repository
์๋ณธ ๋ฆฌํฌ์งํฐ๋ฆฌ๋ก, ํ ์ ์ฒด๊ฐ ์ฐธ์กฐํ๋ ๊ณต์ ๋ฆฌํฌ์งํฐ๋ฆฌ์ด๋ค. - Origin Repository
ํ์ ๊ฐ์ธ์ด ์์ ํ๊ธฐ ์ํด Upstream ๋ฆฌํฌ์งํฐ๋ฆฌ์์ ๋ด ์๊ฒฉ ์ ์ฅ์๋ก ๋ณต์ (fork)ํด์จ ๋ฆฌํฌ์งํฐ๋ฆฌ์ด๋ค.- ๊ฐ ํ์๋ค์ Origin ๋ฆฌํฌ์งํฐ๋ฆฌ์ ๋ก์ปฌ์์ ์์ ํ๋ค.
- ๋ก์ปฌ์์ ์์ ํ ๋ด์ฉ์ ๋จผ์ Origin ๋ฆฌํฌ์งํฐ๋ฆฌ์ ํธ์ํ๋ค.
- ํ ํ๋ก์ ํธ์ ์ต์ ์ฝ๋๋ Upstream ๋ฆฌํฌ์งํฐ๋ฆฌ์์ ๊ฐ์ ธ์จ๋ค.
- ๋์ Origin ๋ฆฌํฌ์งํฐ๋ฆฌ์์ Upstream ๋ฆฌํฌ์งํฐ๋ฆฌ ์ฐ๊ฒฐ ๋ช
๋ น์ด
$ git remote add upstream [upstream repository url]
์ ์ฉ ์์
์ด๋ฐ ๋ฐฉ์์ผ๋ก ์งํ๋ ๊ฒ์ด๋ค.
์ ์ -๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ๋ง๋ค์ด์ผ ํ๋ค๊ณ ๊ฐ์ ํ์.
- Upstream Remote Repository๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์ ์๊ฒฉ ๊ฐ์ธ ์ ์ฅ์์ Fork ํ๋ค.
- ๋์ Origin Repository์ ์ฐ๊ฒฐ๋ ๋ก์ปฌ ๋ฆฌํฌ์งํฐ๋ฆฌ๋ฅผ ์์ฑํ๋ค.
i.$ git clone [Origin Repository url
- ๋์ ๋ก์ปฌ ๋ฆฌํฌ์งํฐ๋ฆฌ์ Upstream ๋ฆฌํฌ์งํฐ๋ฆฌ๋ฅผ ๋ฑ๋กํ๋ค.
i.$ git remote add upstream [Upstream Repository url]
ii. ์ด์ ์์ ํ ๋๋ ์ ์คํธ๋ฆผ์ผ๋ก๋ถํฐ ์ต์ ์ฝ๋๋ฅผ pullํด์จ๋ค. - ๋์ ๋ก์ปฌ ๋ฆฌํฌ์งํฐ๋ฆฌ์์ feature/user-login ๋ธ๋์น๋ฅผ ์์ฑํ์.
i.$ git checkout -b feature/user-login
ii. ํ์ฌ feature/user-login ๋ธ๋์น์ ์๋ ์ํ - upstream์ develop ๋ธ๋์น์์ ์ต์ ์์ค ์ฝ๋๋ฅผ ๋ฐ์ ์จ๋ค.
i.$ git fetch upstream
ii.$ git rebase upstream/develop
iii. rebase๋ ๋ด ๋ก์ปฌ ๋ธ๋์น์ ์ปค๋ฐ(A, B, C)์ Upstream ๋ธ๋์น์ ์ต์ ์ํ(D, E) ์๋ก ๋ค์ ๋ฐฐ์นํ๋ค → ํ์คํ ๋ฆฌ๊ฐ ์ง์ ํ์ผ๋ก ์ ๋ฆฌ (์ฐธ๊ณ : https://tlatmsrud.tistory.com/156) - (์ ํ) ๋ง์ฝ ๋ฆฌ๋ฒ ์ด์ค ํ ๋ค๋ฅธ ํ์์ด Upstream develop์ ์๋ก์ด ์ฝ๋๋ฅผ ์
๋ฐ์ดํธํด ๋ค์ ์ต์ ์ฝ๋๋ฅผ ๋ฐ์์์ผ ํ๋ค๋ฉด pull์ ํ๋ฉด ๋๋ค.
i. $ git pull upstream develop` - ์ต์ ์ฝ๋๋ก ์ ๋ฐ์ดํธ๋ ๋์ ๋ก์ปฌ feature/user-login ๋ธ๋์น์์ ์์ ํ๋ค.
- ์์
์ด ๋๋๋ฉด Origin Repository๋ก ํธ์ํ๋ค.
i.$ git push origin feature/user-login
- ์ด์ ๋์ ๋ก์ปฌ ์์
์ฌํญ์ Upstream develop ๋ธ๋์น๋ก ๋ณด๋ด๊ธฐ ์ํด Pull Request๋ฅผ ํ์.
i. base repository: Upstream Repository / base: develop
ii. head repository: Origin Repository / compare: feature/user-login
์ด๋ฌํ ๋ธ๋์น ์ ๋ต๊ณผ ํ ํ๋ก์ ํธ์ ๋น ๋ฅด๊ฒ ์ต์ํด์ง๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์
์๋ฌด๋๋ ํ๋ก์ ํธ๋ฅผ ๋ง์ด ํด๋ณด๋ ๋ฐฉ๋ฒ ๊ฐ๋ค.
์ฐธ๊ณ ์๋ฃ:
https://nvie.com/posts/a-successful-git-branching-model/
https://techblog.woowahan.com/2553/
https://dallog.github.io/git-branch-strategy/
'โ๏ธ ๊ธฐํ ๊ฐ๋ฐ ์๋ฃ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์น API: SOAP API, SOAP๊ณผ REST์ ์ฐจ์ด (1) | 2025.03.03 |
---|---|
์น ์๋ฒ(Web Server) vs WAS(Web Application Server) ๊ฐ๋ ์ดํด์ ์ฐจ์ด ๋น๊ต feat. Tomcat (0) | 2025.02.17 |
ํ๋ ์์ํฌ vs ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ๋ (0) | 2025.02.16 |
[Git] git fetch์ git pull์ ์ดํด (0) | 2025.02.12 |
[Git] git rebase์ git merge์ ์ดํด (0) | 2025.02.12 |