๊ฐ๋ฐ ์ด๋ณด์๋ฅผ ์ํ Git ๋ธ๋์น ์ ๋ต: ๊ธฐ๋ฅ ๊ฐ๋ฐยท๋ฒ๊ทธ ์์ ยท๋ฐฐํฌ๋ฅผ ๋ธ๋์น๋ก ๊น๋ํ๊ฒ ๋๋๋ ๋ฐฉ๋ฒ
๊ฐ๋ฐ ์ด๋ณด์๋ฅผ ์ํ Git ๋ธ๋์น ์ ๋ต: ๊ธฐ๋ฅ ๊ฐ๋ฐยท๋ฒ๊ทธ ์์ ยท๋ฐฐํฌ๋ฅผ ๋ธ๋์น๋ก ๊น๋ํ๊ฒ ๋๋๋ ๋ฐฉ๋ฒ ๊ฐ๋ฐ์ ๋ง ์์ํ์ ๋ Git์ด ์ ์ผ...
๊ฐ๋ฐ ์ด๋ณด์๋ฅผ ์ํ Git ๋ธ๋์น ์ ๋ต: ๊ธฐ๋ฅ ๊ฐ๋ฐยท๋ฒ๊ทธ ์์ ยท๋ฐฐํฌ๋ฅผ ๋ธ๋์น๋ก ๊น๋ํ๊ฒ ๋๋๋ ๋ฐฉ๋ฒ
๊ฐ๋ฐ์ ๋ง ์์ํ์ ๋ Git์ด ์ ์ผ ํท๊ฐ๋ฆฌ๋ ์๊ฐ์ โ์ด๋ค ๋ธ๋์น์์ ์์
ํด์ผ ํ์ง?โ์
๋๋ค. ๊ทธ๋ฅ main์์ ๋ค ํ๋ฉด ๋นจ๋ผ ๋ณด์ด์ง๋ง, ๊ธฐ๋ฅ ํ๋ ์ถ๊ฐํ๋ค๊ฐ ๊ธํ ๋ฒ๊ทธ๊ฐ ํฐ์ง๋ฉด ์์๊ฐ์ ์ปค๋ฐ์ด ๋ค์ํค๊ณ , ๋ฐฐํฌ ํ์ด๋ฐ๋ ํํธ๋ฌ์ง๋๋ค.
๋ธ๋์น๋ฅผ ์ญํ ๋ณ๋ก ๋๋๋ ์ต๊ด๋ง ์ก์๋, ํ์
์ด๋ ํผ์ ๊ฐ๋ฐ์ด๋ ์ฝ๋๊ฐ ๋๋ ๋งํผ ์ ๋๋ผ์.
๋ธ๋์น๋ฅผ ๋๋๋ ๊ธฐ๋ณธ ์์น 3๊ฐ์ง
- ๋ฐฐํฌ ๊ธฐ์ค์ ํญ์ ๋ช
ํํ๊ฒ: ๋ฐฐํฌ ๊ฐ๋ฅํ ์ฝ๋๋ ํ ๋ธ๋์น์๋ง ๋ก๋๋ค. ๋ณดํต
main(๋๋master)์ ๋๋ค. - ์์ ๋จ์๋ ์๊ฒ: ๊ธฐ๋ฅ์ ๊ธฐ๋ฅ ๋ธ๋์น, ๋ฒ๊ทธ๋ ๋ฒ๊ทธ ๋ธ๋์น๋ก ๋ชฉ์ ์ ๊ณ ์ ํฉ๋๋ค.
- ํฉ์น๊ธฐ(merge) ์ ์ ๋ฆฌ๋ทฐ/๊ฒ์ฆ: ์ต์ํ ๋ก์ปฌ ํ ์คํธ๋ผ๋ ํต๊ณผํ ๋ค ํฉ์นฉ๋๋ค.
์ถ์ฒ ๋ธ๋์น ๊ตฌ์กฐ (์ด๋ณด์์ฉ ํ์ค ์กฐํฉ)
1) main : ๋ฐฐํฌ์ฉ(ํ๋ก๋์
)
- ์ฌ์ฉ์๊ฐ ์ค์ ๋ก ์ฐ๋ ๋ฒ์
- ์ฌ๊ธฐ์๋ ์ฆ์ ๋ฐฐํฌ ๊ฐ๋ฅํ ์ฝ๋๋ง ์กด์ฌ
- ์ง์ ์ปค๋ฐ์ ํผํ๊ณ , PR/๋จธ์ง๋ก๋ง ๋ฐ์ํ๋ ์ต๊ด์ ๊ถ์ฅํฉ๋๋ค.
2) develop : ํตํฉ ๊ฐ๋ฐ์ฉ(์ ํ)
- ์ฌ๋ฌ ๊ธฐ๋ฅ์ด ๋ชจ์ฌ์ ๋ค์ ๋ฆด๋ฆฌ์ค๋ฅผ ์ค๋นํ๋ ๊ณต๊ฐ
- ํผ์ ๊ฐ๋ฐํ๊ณ ๋ฐฐํฌ๊ฐ ์ฆ๋ค๋ฉด ์๋ตํด๋ ๋ฉ๋๋ค.
- ํ ๊ฐ๋ฐ/๊ธฐ๋ฅ์ด ๋ง๋ค๋ฉด
develop์ด ์์ถฉ์ง๋ ์ญํ ์ ํด์ค์.
3) feature/* : ๊ธฐ๋ฅ ๊ฐ๋ฐ์ฉ
- ์:
feature/login,feature/profile-edit - โ์ด ๋ธ๋์น์ ๋ชฉ์ ์ ์ค์ง ์ด ๊ธฐ๋ฅ ํ๋โ๋ผ๊ณ ๋ฑ ์ ํด๋๋ฉด ์ปค๋ฐ์ด ๊น๋ํด์ง๋๋ค.
4) bugfix/* : ์ผ๋ฐ ๋ฒ๊ทธ ์์ ์ฉ
- ์:
bugfix/null-pointer-on-home - ์์ง ๋ฐฐํฌ ์ (
develop)์์ ๋ฐ๊ฒฌ๋ ๋ฒ๊ทธ๋ฅผ ์ก์ ๋ ์ฌ์ฉ
5) hotfix/* : ๊ธด๊ธ ๋ฐฐํฌ ๋ฒ๊ทธ์ฉ
- ์:
hotfix/payment-crash - ์ด๋ฏธ ๋ฐฐํฌ๋
main์์ ํฐ์ง ๋ฌธ์ ๋ฅผ ๋ฐ๋ก ๊ณ ์น ๋ ์ฌ์ฉ - ์์ ํ
main์ ๋จธ์งํ๊ณ , ๊ฐ์ ์์ ์ดdevelop์๋ ๋ฐ์๋๋๋ก ๋๋๋ ค ๋จธ์งํ๋ ๊ฒ ํฌ์ธํธ์ ๋๋ค.
์ค์ ํ๋ฆ ์์: ๊ธฐ๋ฅ ๊ฐ๋ฐ โ ํตํฉ โ ๋ฐฐํฌ
๊ธฐ๋ฅ 1๊ฐ๋ฅผ ๊ฐ๋ฐํ๋ ํ์ค ๋ฃจํด
git checkout develop
git pull
git checkout -b feature/login
# ์์
...
git add .
git commit -m "feat: ๋ก๊ทธ์ธ ํผ ๋ฐ API ์ฐ๋"
git checkout develop
git merge feature/login
git push
feature/login์์ ๊ฐ๋ฐํ๊ณ- ๋ค ๋๋๋ฉด
develop์ผ๋ก ๋จธ์ง - ๊ธฐ๋ฅ์ด ์ถฉ๋ถํ ๋ชจ์ด๋ฉด
main์ผ๋ก ๋ฐฐํฌ ๋จธ์ง๋ฅผ ํฉ๋๋ค.
๋ฐฐํฌํ ๋(์: v1.2.0)
git checkout main git pull git merge develop git tag v1.2.0 git push --tags git push
ํ๊ทธ๋ ์ ํ์ด์ง๋ง, ๋์ค์ โ์ด ๋ฒ์ ์ด ์ธ์ ๋ฐฐํฌ๋์ง?โ๋ฅผ ์ฐพ์ ๋ ํฐ ๋์์ด ๋ฉ๋๋ค.
๊ธด๊ธ ์ฅ์ ์ํฉ ์์: ๋ฐฐํฌ๋ ๋ฒ๊ทธ๋ฅผ ์ฆ์ ์์ (hotfix)
์ํฉ: ๊ฒฐ์ ํ๋ฉด์์ ์ฑ์ด ํฌ๋์. ์ค๋ ๋ฐ๋ก ์์ ๋ฐฐํฌ๊ฐ ํ์.
git checkout main
git pull
git checkout -b hotfix/payment-crash
# ์์ ...
git add .
git commit -m "fix: ๊ฒฐ์ ํฌ๋์ ์์ธ ์ฒ๋ฆฌ"
git checkout main
git merge hotfix/payment-crash
git tag v1.2.1
git push --tags
git push
git checkout develop
git merge hotfix/payment-crash
git push
์ฌ๊ธฐ์ ํต์ฌ์ main๊ณผ develop ๋ ๋ค์ ๋ฐ์ํ๋ ๊ฒ์
๋๋ค.
์ ๊ทธ๋ฌ๋ฉด ๋ค์ ๋ฐฐํฌ ๋ ๋ฒ๊ทธ๊ฐ โ๋ถํโํ๋ ์ผ์ด ์๊น๋๋ค.
๋ธ๋์น/์ปค๋ฐ ๋ฉ์์ง ๋ค์ด๋ฐ ์ต์ ๊ท์น
๋ธ๋์น ์ด๋ฆ
feature/๊ธฐ๋ฅ-์์ฝbugfix/์์ธ-๋๋-์ฆ์hotfix/์๋น์ค์ํฅ-์ด์
์ปค๋ฐ ๋ฉ์์ง(๊ฐ๋จํ ๊ท์น๋ง)
feat: ...๊ธฐ๋ฅ ์ถ๊ฐfix: ...๋ฒ๊ทธ ์์ refactor: ...๋ฆฌํฉํฐ๋ง(๋์ ๋ณ๊ฒฝ ๊ฑฐ์ ์์)chore: ...์ค์ /์ก์ผ ์:fix: ํ ํ๋ฉด ์ง์ ์ NPE ๋ฐฉ์ง
์ด๋ณด์๊ฐ ์์ฃผ ํ๋ ์ค์ 4๊ฐ์ง(๊ทธ๋ฆฌ๊ณ ํด๊ฒฐ)
-
ํ ๋ธ๋์น์์ ๊ธฐ๋ฅ+๋ฒ๊ทธ+๋ฆฌํฉํฐ๋ง์ ๋ค ํจ โ ๋ชฉ์ ์ด ์์ด๋ฉด ๋ฆฌ๋ทฐ๋ ์ด๋ ต๊ณ ๋กค๋ฐฑ๋ ํ๋ญ๋๋ค. ํ ๋ธ๋์น=ํ ๋ชฉ์ ์ ์งํค์ธ์.
-
main์ ๋ฐ๋ก ์ปค๋ฐ โ ๋ฐฐํฌ ๋ธ๋์น๋ ์์ ์ง๋์ฌ์ผ ํฉ๋๋ค. ๊ผญ ๋ธ๋์น ๋ฐ์ ๋จธ์งํ์ธ์. -
๊ธด๊ธ ์์ ํ
develop์ ๋ฐ์ ์ ํจ โ ๋ค์ ๋ฐฐํฌ ๋ ๋ค์ ํฐ์ง๋๋ค. hotfix๋ โ๋๋๋ ค ๋จธ์งโ๊น์ง๊ฐ ํ ์ธํธ์ ๋๋ค. -
๋ธ๋์น๊ฐ ์์ด๊ธฐ๋ง ํ๊ณ ์ ๋ฆฌ ์ ํจ โ ๋จธ์ง ๋๋
feature/*๋ ์ญ์ ํ์ธ์. ์ ์ฅ์๊ฐ ํจ์ฌ ๋ณด๊ธฐ ์ข์์ง๋๋ค.
๋ง๋ฌด๋ฆฌ: โ์๊ฒ ๋๋๊ณ , ์์ ํ๊ฒ ํฉ์น๊ธฐโ
Git ๋ธ๋์น ์ ๋ต์ ๊ฑฐ์ฐฝํ ๊ท์น์ ์ธ์ฐ๋ ๊ฒ ์๋๋ผ, ์ผ์ด ๊ผฌ์ด์ง ์๊ฒ ํ๋ฆ์ ๋ง๋๋ ์ต๊ด์
๋๋ค.
์ค๋๋ถํฐ๋ main์ ๋ฐฐํฌ์ฉ์ผ๋ก ์งํค๊ณ , ๊ธฐ๋ฅ์ feature/, ๋ฒ๊ทธ๋ bugfix/, ๊ธด๊ธ์ hotfix/*๋ก๋ง ๋๋ ๋ ๊ฐ๋ฐ ๊ฒฝํ์ด ํ ๋จ๊ณ ์ ๋ฆฌ๋ ๊ฑฐ์์.
โฌ๏ธ ์ด ๊ธ์ด ๋์์ด ๋์ จ๋ค๋ฉด, ์๋ ๊ด๊ณ ๋ฅผ ํ ๋ฒ๋ง ํด๋ฆญํด์ฃผ์ธ์! ์ ์๊ฒ ํฐ ํ์ด ๋ฉ๋๋ค ๐โโ๏ธ โฌ๏ธ