์ด๋ณด ๊ฐ๋ฐ์๋ฅผ ์ํ Git ๋ธ๋์น ์ ๋ต: `main`ยท`dev`ยท`feature`๋ฅผ ๋๋๊ณ Pull Request๋ก ํ์ ํ๋ ๊ฐ์ฅ ์ฌ์ด ํ๋ฆ
์ด๋ณด ๊ฐ๋ฐ์๋ฅผ ์ํ Git ๋ธ๋์น ์ ๋ต: ยท ยท ๋ฅผ ๋๋๊ณ Pull Request๋ก ํ์ ํ๋ ๊ฐ์ฅ ์ฌ์ด ํ๋ฆ ์ฒ์ ํ ํ๋ก์ ํธ๋ฅผ ์์ํ๋ฉด...
์ด๋ณด ๊ฐ๋ฐ์๋ฅผ ์ํ Git ๋ธ๋์น ์ ๋ต: mainยทdevยทfeature๋ฅผ ๋๋๊ณ Pull Request๋ก ํ์ ํ๋ ๊ฐ์ฅ ์ฌ์ด ํ๋ฆ
์ฒ์ ํ ํ๋ก์ ํธ๋ฅผ ์์ํ๋ฉด Git์ด โ๋ฒ์ ๊ด๋ฆฌ ๋๊ตฌโ์์ ๊ฐ์๊ธฐ โํ์ํฌ ๋๊ตฌโ๋ก ๋ณํฉ๋๋ค. ๋ด๊ฐ ๊ณ ์น ์ฝ๋๊ฐ ๋๊ตฐ๊ฐ์ ์์ ์ ๋ฎ์ด๋ฒ๋ฆฌ๊ฑฐ๋, ์ ๋๋ ๊ธฐ๋ฅ์ด ๊ฐ์๊ธฐ ๊นจ์ง๋ ์๊ฐ์ด ์ค์ฃ . ์ด ๊ธ์์๋ ์ด๋ณด ๊ฐ๋ฐ์๋ ๋ฐ๋ก ์ ์ฉํ ์ ์๋ ๊ฐ์ฅ ๋จ์ํ 3๋ธ๋์น ์ ๋ต(mainยทdevยทfeature)๊ณผ Pull Request(PR) ์ค์ฌ ํ์ ํ๋ฆ์ ์ ๋ฆฌํฉ๋๋ค. ๋ณต์กํ ๊ท์น ๋์ , ์์ ํ๊ณ ์์ธก ๊ฐ๋ฅํ ์์ ์ต๊ด์ ๋ง๋๋ ๋ฐ ์ด์ ์ ๋ง์ถ๊ฒ์.
๋ธ๋์น ์ญํ ์ ๋ฑ 3๊ฐ๋ก ๊ณ ์ ํ๊ธฐ
main: โํญ์ ๋ฐฐํฌ ๊ฐ๋ฅํโ ๊ธฐ์ค์
- ์์น: main์ ๊นจ์ง๋ฉด ์ ๋๋ ๋ธ๋์น์ ๋๋ค.
- ์ง์ ์ปค๋ฐ์ ์ง์ํ๊ณ , ๋ณดํต PR๋ก๋ง ๋ฐ์ํฉ๋๋ค.
- ์์ ํ์ด๋ผ๋ main์ด ์์ ์ ์ด๋ฉด ๋ง์์ด ํธํด์ง๋๋ค.
dev: ๋ค์ ๋ฐฐํฌ๋ฅผ ์ค๋นํ๋ ํตํฉ ๊ณต๊ฐ
- dev๋ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ๋ชจ์ ํตํฉ ํ ์คํธ๋ฅผ ํ๋ ๊ณณ์ ๋๋ค.
- ๊ธฐ๋ฅ ๊ฐ๋ฐ์ dev์์ ๋ฐ๋ก ํ์ง ์๊ณ , feature ๋ธ๋์น์์ ํ ๋ค dev๋ก ํฉ์นฉ๋๋ค.
feature/*: ๊ธฐ๋ฅ ๋จ์ ์์ ๊ณต๊ฐ
- ์๋ก์ด ๊ธฐ๋ฅ/์์ ์ฌํญ์ ๊ธฐ๋ฅ ๋จ์๋ก ๋ธ๋์น ์์ฑ์ด ํต์ฌ์ ๋๋ค.
- ๋ค์ด๋ฐ ์์:
- feature/login
- feature/profile-edit
- feature/fix-navbar
๊ฐ์ฅ ์ฌ์ด ํ์ ํ๋ฆ (์ค์ ๋จ๊ณ)
1) ์ต์ dev์์ ๊ธฐ๋ฅ ๋ธ๋์น ๋ง๋ค๊ธฐ
git checkout dev git pull origin dev git checkout -b feature/login
- ํญ์ ์ต์ dev ๊ธฐ์ค์ผ๋ก ์์ํ๋ฉด ์ถฉ๋์ด ์ค์ด๋ญ๋๋ค.
2) ์์ ํ๊ณ โ์๊ฒโ ์ปค๋ฐํ๊ธฐ
git add .
git commit -m "Add login form UI"
git commit -m "Implement login API integration"
- ์ปค๋ฐ์ ์๊ณ ์๋ฏธ ์๊ฒ ์ชผ๊ฐ๋ฉด ๋ฆฌ๋ทฐ๊ฐ ์ฌ์์ง๋๋ค.
- ๋ฉ์์ง๋ โ๋ฌด์์ ํ๋์งโ๊ฐ ๋๋ฌ๋๊ฒ ์์ฑํ์ธ์.
3) ์๊ฒฉ์ ํธ์ํ๊ณ PR ์ด๊ธฐ (feature โ dev)
git push -u origin feature/login
PR์๋ ์๋ 3๊ฐ์ง๋ง ๊ผญ ์ ์ด๋ ์ถฉ๋ถํฉ๋๋ค.
- ๋ณ๊ฒฝ ์์ฝ: ๋ฌด์์ ๊ตฌํ/์์ ํ๋์ง
- ํ ์คํธ ๋ฐฉ๋ฒ: ์ด๋ป๊ฒ ํ์ธํ๋์ง(์: ๋ก๊ทธ์ธ ์ฑ๊ณต/์คํจ ์ผ์ด์ค)
- ์คํฌ๋ฆฐ์ท/๋ก๊ทธ: UI๋ ์๋ฌ ์์ ์ด๋ฉด ํนํ ๋์์ด ๋ฉ๋๋ค
4) ๋ฆฌ๋ทฐ ๋ฐ์ โ dev์ ๋จธ์ง
- ๋ฆฌ๋ทฐ ์ฝ๋ฉํธ๋ โ์ง์ โ์ด ์๋๋ผ ํ์ ํ์ง์ ๋ง์ถ๋ ๊ณผ์ ์ ๋๋ค.
- ์์ ์ปค๋ฐ ํ ๊ฐ์ PR์ ํธ์ํ๋ฉด ์๋์ผ๋ก ๊ฐฑ์ ๋ฉ๋๋ค.
5) ๋ฐฐํฌ ์์ ์ dev โ main PR
- ๊ธฐ๋ฅ๋ค์ด dev์์ ์์ ํ๋๋ฉด main์ผ๋ก PR์ ์ฌ๋ฆฝ๋๋ค.
- ์ด PR์ โ์ด๋ฒ ๋ฐฐํฌ ๋ฌถ์โ์ด๋ผ ์๊ฐํ๋ฉด ์ข์์.
์์ ํ/์ด๋ณด ํ์ด ์์ฃผ ๊ฒช๋ ๋ฌธ์ ์ ํด๊ฒฐ ํ
์ถฉ๋(Conflict)์ด ๋ฌด์ญ๋ค
-
๊ธฐ๋ฅ ๋ธ๋์น๋ฅผ ์ค๋ ๋๋ฉด ์ถฉ๋ ํ๋ฅ ์ด ์ปค์ง๋๋ค. ๊ธฐ๋ฅ์ ์๊ฒ ์ชผ๊ฐ๊ณ PR์ ์์ฃผ ์ฌ๋ฆฌ์ธ์.
-
์์ ์ค๊ฐ์ dev ๋ณ๊ฒฝ์ ๊ฐ์ ธ์ค๊ณ ์ถ๋ค๋ฉด:
git checkout feature/login git fetch origin git rebase origin/dev
- rebase๊ฐ ์ด๋ ต๋ค๋ฉด merge๋ก ์์ํด๋ ๊ด์ฐฎ์ต๋๋ค. ์ค์ํ ๊ฑด ์์ฃผ ๋ง์ถ๋ ์ต๊ด์ ๋๋ค.
โ๊ธํ ์์ โ์ ์ด๋์ ํ์ง?
- ๋ฐฐํฌ๋ main์์ ๊ธด๊ธ ์์ ์ด ํ์ํ๋ฉด hotfix/*๋ฅผ ์ถ๊ฐ๋ก ์ฐ๊ธฐ๋ ํฉ๋๋ค. ๋ค๋ง ์ด๋ณด ํ์ด๋ผ๋ฉด ์ฐ์ feature/fix-...๋ก dev์ ๋ฐ์ โ ๋น ๋ฅด๊ฒ main์ผ๋ก ๋ฐฐํฌ ํ๋ฆ๋ถํฐ ์์ ํํ๋ ๊ฑธ ์ถ์ฒํฉ๋๋ค.
PR ๋ฆฌ๋ทฐ๋ ๋ญ ๋ด์ผ ํ ๊น?
์ด๋ณด ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์คํธ(์ต์ ๋ฒ์ )
- ๋์: ์๊ตฌ์ฌํญ๋๋ก ๋์ํ๋๊ฐ?
- ์์ : ์์ธ ์ฒ๋ฆฌ/์๋ฌ ๋ฉ์์ง๊ฐ ์๋๊ฐ?
- ๊ฐ๋ ์ฑ: ๋ณ์๋ช /ํจ์๋ช ์ด ์๋๋ฅผ ๋งํด์ฃผ๋๊ฐ?
- ์ํฅ ๋ฒ์: unrelated ํ์ผ ๋ณ๊ฒฝ์ด ๊ณผํ์ง ์์๊ฐ?
์์ ์๋๋ฆฌ์ค: ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ํ์ด ๊ฐ์ด ๋ง๋ค ๋
- A๊ฐ feature/login-ui์์ ํ๋ฉด์ ๋ง๋ค๊ณ PR โ dev
- B๊ฐ feature/login-api์์ API ์ฐ๋ํ๊ณ PR โ dev
- dev์์ ํจ๊ป ํ ์คํธ(์ฑ๊ณต/์คํจ/ํ ํฐ ๋ง๋ฃ ๋ฑ)
- ์ด์ ์์ผ๋ฉด dev โ main PR๋ก ๋ฐฐํฌ ์ด ํ๋ฆ์ ์ฅ์ ์ ๋ช ํํฉ๋๋ค. ๋๊ฐ ๋ฌด์์ ์์ ์ค์ธ์ง ๋ณด์ด๊ณ , ๋ฌธ์ ๊ฐ ์๊ฒจ๋ main์ ์งํฌ ์ ์์ด์. ๊ฒฐ๊ณผ์ ์ผ๋ก ๊ฐ๋ฐ ์๋๋ณด๋ค ๋ ์ค์ํ โํ์ ์์ ๊ฐโ์ด ์๊น๋๋ค.
๋ง๋ฌด๋ฆฌ: ๊ท์น์ ๋จ์ํ ์๋ก ์ค๋ ๊ฐ๋๋ค
์ด๋ณด ํ์๊ฒ ๊ฐ์ฅ ์ข์ Git ์ ๋ต์ โ๋ฉ์ง ์ ๋ตโ์ด ์๋๋ผ ๋งค์ผ ์งํฌ ์ ์๋ ์ ๋ต์ ๋๋ค. main์ ์์ ์ ์ผ๋ก, dev๋ ํตํฉ ๊ณต๊ฐ์ผ๋ก, feature๋ ๊ธฐ๋ฅ ๋จ์๋ก. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ๋ณ๊ฒฝ์ PR๋ก ๋ํํ๋ฉฐ ํฉ์น๊ธฐ. ์ด 4๊ฐ์ง๋ง ์ง์ผ๋ ํ์ ์คํธ๋ ์ค๊ฐ ๋์ ๋๊ฒ ์ค์ด๋ญ๋๋ค.
โฌ๏ธ ์ด ๊ธ์ด ๋์์ด ๋์ จ๋ค๋ฉด, ์๋ ๊ด๊ณ ๋ฅผ ํ ๋ฒ๋ง ํด๋ฆญํด์ฃผ์ธ์! ์ ์๊ฒ ํฐ ํ์ด ๋ฉ๋๋ค ๐โโ๏ธ โฌ๏ธ