๊ฐ๋ฐ ์ด๋ณด๋ฅผ ์ํ Git ๋ธ๋์น ์ ๋ต: feature ๋ธ๋์น๋ก ์์ ํ๊ฒ ์์ ํ๊ณ Pull Request๋ก ๋ฆฌ๋ทฐ๋ฐ๋ ๊ธฐ๋ณธ ํ๋ฆ
๊ฐ๋ฐ ์ด๋ณด๋ฅผ ์ํ Git ๋ธ๋์น ์ ๋ต: feature ๋ธ๋์น๋ก ์์ ํ๊ฒ ์์ ํ๊ณ Pull Request๋ก ๋ฆฌ๋ทฐ๋ฐ๋ ๊ธฐ๋ณธ ํ๋ฆ ๊ฐ๋ฐ์ ํ๋ค...
๊ฐ๋ฐ ์ด๋ณด๋ฅผ ์ํ Git ๋ธ๋์น ์ ๋ต: feature ๋ธ๋์น๋ก ์์ ํ๊ฒ ์์ ํ๊ณ Pull Request๋ก ๋ฆฌ๋ทฐ๋ฐ๋ ๊ธฐ๋ณธ ํ๋ฆ
๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด โ๋ด๊ฐ ๊ณ ์น ์ฝ๋ ๋๋ฌธ์ ๋ค๋ฅธ ๊ธฐ๋ฅ์ด ๊นจ์ง๋ฉด ์ด๋กํ์ง?โ๋ผ๋ ๋ถ์์ด ๋ฐ๋ผ์ต๋๋ค. ํนํ ์ด๋ณด์ผ์๋ก ๋ฉ์ธ ๋ธ๋์น์ ๋ฐ๋ก ์ปค๋ฐํ๋ค๊ฐ ๋๋๋ฆฌ๋๋ผ ์๊ฐ์ ๋ ๋ฆฌ๋ ์ผ์ด ํํด์. ์ฌ๊ธฐ์ ๊ฐ์ฅ ๊ฐ๋จํ๊ณ ํจ๊ณผ์ ์ธ ํด๊ฒฐ์ฑ ์ด feature ๋ธ๋์น + Pull Request(PR) ๋ฆฌ๋ทฐ ํ๋ฆ์ ๋๋ค. ํ ๊ฐ๋ฐ์ ๋ฌผ๋ก , ํผ์ ๊ฐ๋ฐํด๋ ์ค์๊ฐ ์ค๊ณ ์์ ์ด ๊น๋ํด์ง๋๋ค.
์ feature ๋ธ๋์น๊ฐ ๊ธฐ๋ณธ์ธ๊ฐ?
feature ๋ธ๋์น๋ ํ๋์ ์์ (๊ธฐ๋ฅ/๋ฒ๊ทธ ์์ )์ ์ํ ์์ ์์ ๊ณต๊ฐ์ ๋๋ค.
- ๋ฉ์ธ ๋ธ๋์น(
main)๋ ํญ์ ์์ ์ ์ธ ์ํ๋ก ์ ์ง - ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ๋ถ๋ฆฌ๋ ๋ธ๋์น์์ ์งํ โ ์คํจํด๋ ๋ฉ์ธ์ ์ํฅ ์์
- PR์ ํตํด ๋ณ๊ฒฝ ๋ด์ฉ์ ํ ๋ฒ ๋ ์ ๊ฒ(๋ฆฌ๋ทฐ, ํ ์คํธ)ํ๊ณ ํฉ์น๊ธฐ ์ด๋ณด์๊ฒ ํนํ ์ข์ ์ด์ ๋, ์์ ๋จ์๊ฐ ์์์ ธ์ ์ค์์ ๋ฒ์๊ฐ ์ข์์ง๊ณ , โ๋ด๊ฐ ๋ญ ๋ณ๊ฒฝํ๋์งโ๊ฐ ๋ช ํํด์ง๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ธฐ๋ณธ ๋ธ๋์น ๊ตฌ์ฑ: ๋จ์ํ๊ฒ ์์ํ๊ธฐ
์ฒ์์๋ ๋ค์ ์ ๋๋ฉด ์ถฉ๋ถํฉ๋๋ค.
main: ๋ฐฐํฌ/๊ณต์ ๊ฐ๋ฅํ ์์ ๋ธ๋์นfeature/*: ๊ธฐ๋ฅ ๊ฐ๋ฐ ๋ธ๋์น (์:feature/login,feature/todo-ui)- (์ ํ)
fix/*: ๊ธด๊ธ ๋ฒ๊ทธ ์์ ๋ธ๋์น ๋ธ๋์น ์ด๋ฆ์ โ๋ฌด์์ ํ๋์งโ๊ฐ ๋ณด์ด๊ฒ ์ง๋ ๊ฒ ํต์ฌ์ ๋๋ค. ๊ฐ์ธ ํ๋ก์ ํธ๋ผ๋ ๋ฏธ๋์ ๋ด๊ฐ ๋ดค์ ๋ ์ดํด๊ฐ ๋ฉ๋๋ค.
์ค์ ํ๋ฆ: feature ๋ธ๋์น โ PR โ ๋จธ์ง
1) ์ต์ main์์ ๋ธ๋์น ๋ง๋ค๊ธฐ
์์ ์ ์ main์ ์ต์ ์ผ๋ก ๋ง์ถ๊ณ , ๊ทธ ์ํ์์ ๋ธ๋์น๋ฅผ ๋ด๋ค(ํ์ํ๋ค)๊ณ ์๊ฐํ๋ฉด ์ฝ์ต๋๋ค.
git switch main git pull origin main git switch -c feature/login
2) ์์ ํ๊ณ , ์๋ฏธ ์๋ ๋จ์๋ก ์ปค๋ฐํ๊ธฐ
์ปค๋ฐ์ โ๋์ค์ ๋๋๋ฆฌ๊ฑฐ๋ ๋ฆฌ๋ทฐํ ์ ์๋ ๋จ์โ๋ก ์ชผ๊ฐ๋ ๊ฒ ์ข์ต๋๋ค.
git add .
git commit -m "Add login form UI"
git commit -m "Connect login API and handle errors"
ํ: ์ปค๋ฐ ๋ฉ์์ง๋ ๋ฌด์์ ํ๋์ง๊ฐ ๋ฐ๋ก ๋ณด์ด๊ฒ ๋์ฌ๋ก ์์ํ๋ฉด ์ฝ๊ธฐ ํธํฉ๋๋ค.
3) ์๊ฒฉ ์ ์ฅ์๋ก ํธ์ํ๊ณ PR ๋ง๋ค๊ธฐ
git push -u origin feature/login
์ดํ PR์ ๋ง๋ค ๋๋ ์ค๋ช ์ ๋ค์์ ๋ฃ์ผ๋ฉด ๋ฆฌ๋ทฐ๊ฐ ๋นจ๋ผ์ง๋๋ค.
- ๋ณ๊ฒฝ ์์ฝ: ๋ฌด์์ ์ ๋ฐ๊ฟจ๋์ง
- ํ ์คํธ ๋ฐฉ๋ฒ: ์ด๋ป๊ฒ ํ์ธํ๋์ง
- ์ํฅ ๋ฒ์: UI/์๋ฒ/DB ๋ฑ ์ด๋๊ฐ ๋ฐ๋๋์ง
4) ๋ฆฌ๋ทฐ ๋ฐ์ ํ ์ ๋ฐ์ดํธ ์ปค๋ฐ
๋ฆฌ๋ทฐ์์ โ์ฌ๊ธฐ ํจ์๊ฐ ๋๋ฌด ๊ธธ์ด์โ, โ์์ธ ์ฒ๋ฆฌ ์ถ๊ฐํด ์ฃผ์ธ์โ ๊ฐ์ ํผ๋๋ฐฑ์ด ์ค๋ฉด ์์ ํ๊ณ ๊ฐ์ ๋ธ๋์น์ ์ถ๊ฐ ์ปค๋ฐ์ ์ฌ๋ฆฌ๋ฉด ๋ฉ๋๋ค.
git add .
git commit -m "Refactor login handler and add edge cases"
git push
5) ๋จธ์ง ํ ๋ธ๋์น ์ ๋ฆฌ
๋จธ์ง๊ฐ ๋๋๋ฉด feature ๋ธ๋์น๋ ๋ณดํต ์ญ์ ํฉ๋๋ค. ์์ ์ด ๋๋ ๋ธ๋์น๋ฅผ ๋จ๊ฒจ๋๋ฉด ๋ธ๋์น ๋ชฉ๋ก์ด ๊ธ๋ฐฉ ๋ณต์กํด์ ธ์.
git switch main git pull origin main git branch -d feature/login
์๊ฒฉ ๋ธ๋์น ์ญ์ ๋ ๋ณดํต PR ๋จธ์ง ๊ณผ์ ์์ ์ต์ ์ผ๋ก ์ฒ๋ฆฌ๋๊ธฐ๋ ํฉ๋๋ค.
์์ฃผ ๊ฒช๋ ์ํฉ๊ณผ ์์ ํ ํด๊ฒฐ๋ฒ
main์ด ์์ผ๋ก ๊ฐ๋ฒ๋ ธ์ ๋: ๋ด ๋ธ๋์น์ ์ต์ main ๋ฐ์ํ๊ธฐ
๋ค๋ฅธ ์ฌ๋์ด main์ ๋จธ์งํด ๋ด ๋ธ๋์น๊ฐ ๋ค์ฒ์ง ์ ์์ต๋๋ค. ์ด๋ด ๋๋ ๋ณดํต main์ ๋ด ๋ธ๋์น์ ํฉ์ณ์ ์ถฉ๋์ ํด๊ฒฐํฉ๋๋ค.
git switch feature/login git fetch origin git merge origin/main
์ถฉ๋์ด ๋๋ฉด ๋นํฉํ์ง ๋ง๊ณ , ์ถฉ๋ ํ์ผ์ ์ด์ด <<<<<<, ======, >>>>>> ๊ตฌ๊ฐ์ ์ ๋ฆฌํ ๋ค ๋ค์ ์ปค๋ฐํ๋ฉด ๋ฉ๋๋ค.
โPR์ด ๋๋ฌด ์ปค์โ๋ผ๋ ๋ง์ด ๋์ฌ ๋
์ด๋ณด๊ฐ ๊ฐ์ฅ ๋ง์ด ํ๋ ์ค์ ์ค ํ๋๊ฐ PR์ ๋ณ๊ฒฝ์ ํ๊บผ๋ฒ์ ๋ด๋ ๊ฒ๋๋ค. ์๋ฅผ ๋ค์ด ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ๋ง๋ ๋ค๋ฉด:
- PR1: UI ์ถ๊ฐ
- PR2: API ์ฐ๊ฒฐ
- PR3: ์์ธ ์ฒ๋ฆฌ/๋ฆฌํฉํฐ๋ง ์ด๋ฐ ์์ผ๋ก ์ชผ๊ฐ๋ฉด ๋ฆฌ๋ทฐ๋ ์ฌ์์ง๊ณ , ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ๋กค๋ฐฑ๋ ๊ฐ๋จํฉ๋๋ค.
์ด๋ณด๋ฅผ ์ํ PR ์ฒดํฌ๋ฆฌ์คํธ(์ด๊ฒ๋ง ์ง์ผ๋ ํ๋ฆฌํฐ๊ฐ ์ฌ๋ผ๊ฐ๋๋ค)
๋ธ๋์น๊ฐ main์์ ์ต์ ์ํ๋ก ๋ถ๊ธฐ๋๋๊ฐ
์ปค๋ฐ์ด ์์ ๋จ์๋ก ๋๋์ด ์๋๊ฐ
PR ์ค๋ช ์ ๋ณ๊ฒฝ ์ด์ /ํ ์คํธ ๋ฐฉ๋ฒ์ด ์๋๊ฐ
๋ถํ์ํ ํ์ผ(๋ก๊ทธ, ์์ ํ์ผ)์ด ํฌํจ๋์ง ์์๋๊ฐ
์ค์ค๋ก ํ ๋ฒ์ ์ ์ฒด ๋ณ๊ฒฝ(diff)์ ์ฝ์ด๋ดค๋๊ฐ
๋ง๋ฌด๋ฆฌ: โ์์ ํ ์์ ๋ฃจํดโ์ด ์ค๋ ฅ์ ํค์๋๋ค
feature ๋ธ๋์น๋ก ์์ ํ๊ณ PR๋ก ๋ฆฌ๋ทฐ๋ฐ๋ ํ๋ฆ์ ๋จ์ํ ํ ๋ฌธํ๊ฐ ์๋๋ผ, ๊ฐ๋ฐ ์ด๋ณด๊ฐ ์ค์ ์์ด ์ฑ์ฅํ๋ ์ฅ์น์ ๋๋ค. ์ฒ์์ ๋ฒ๊ฑฐ๋กญ๊ฒ ๋๊ปด์ ธ๋, ์ต์ํด์ง๋ฉด ์คํ๋ ค ์๋๊ฐ ๋นจ๋ผ์ง๋๋ค. ๋ค์ ์์ ๋ถํฐ๋ main์ ๋ฐ๋ก ์ปค๋ฐํ๋ ๋์ , ์์ feature ๋ธ๋์น ํ๋๋ถํฐ ๋ง๋ค์ด ๋ณด์ธ์.
โฌ๏ธ ์ด ๊ธ์ด ๋์์ด ๋์ จ๋ค๋ฉด, ์๋ ๊ด๊ณ ๋ฅผ ํ ๋ฒ๋ง ํด๋ฆญํด์ฃผ์ธ์! ์ ์๊ฒ ํฐ ํ์ด ๋ฉ๋๋ค ๐โโ๏ธ โฌ๏ธ