๊ฐ๋ฐ ์ด๋ณด์๋ฅผ ์ํ Git ๋ธ๋์น ์ ๋ต: feature ๋ธ๋์น ๋ง๋ค๊ณ Pull Request๋ก ๋ณํฉ๊น์ง ๋ฐ๋ผํ๊ธฐ
๊ฐ๋ฐ ์ด๋ณด์๋ฅผ ์ํ Git ๋ธ๋์น ์ ๋ต: feature ๋ธ๋์น ๋ง๋ค๊ณ Pull Request๋ก ๋ณํฉ๊น์ง ๋ฐ๋ผํ๊ธฐ ์ feature ๋ธ๋์น๋ฅผ...
๊ฐ๋ฐ ์ด๋ณด์๋ฅผ ์ํ Git ๋ธ๋์น ์ ๋ต: feature ๋ธ๋์น ๋ง๋ค๊ณ Pull Request๋ก ๋ณํฉ๊น์ง ๋ฐ๋ผํ๊ธฐ
์ feature ๋ธ๋์น๋ฅผ ์ฐ๋์?
ํ ์ค๋ก ์์ฝํ๋ฉด ์์ ์ ๊ฒฉ๋ฆฌํด์ ์์ ํ๊ฒ ํฉ์น๊ธฐ ์ํด์์ ๋๋ค.
- main ๋ธ๋์น: ์ธ์ ๋ ๋ฐฐํฌ/๊ณต์ ๊ฐ๋ฅํ โ์์ ๋ฒ์ โ
- feature ๋ธ๋์น: ๊ธฐ๋ฅ/์์ ๋จ์๋ก ๋ถ๋ฆฌ๋ โ์์ ๊ณต๊ฐโ
- PR: ๋ณ๊ฒฝ ๋ด์ฉ์ ๋ฆฌ๋ทฐํ๊ณ , ์ถฉ๋์ ํด๊ฒฐํ๊ณ , ๊ธฐ๋ก์ ๋จ๊ธฐ๋ฉฐ ๋ณํฉํ๋ โ๊ฒ๋ฌธ์โ ์ด ๊ตฌ์กฐ๋ง ์ง์ผ๋ โ๋๊ฐ ์ธ์ ๋ฌด์์ ๋ฐ๊ฟจ๋์งโ๊ฐ ์ ๋ช ํด์ง๊ณ , ์ค์ํ์ ๋ ๋๋๋ฆฌ๊ธฐ๋ ์ฌ์์ง๋๋ค.
๊ธฐ๋ณธ ๋ธ๋์น ๊ตฌ์ฑ (์ด๋ณด์ ์ถ์ฒ)
๋ธ๋์น ์ด๋ฆ ๊ท์น
ํ๋ง๋ค ๋ค๋ฅด์ง๋ง ์ด๋ณด์์๊ฒ๋ ์๋ ์ ๋๋ฉด ์ถฉ๋ถํฉ๋๋ค.
- main: ๊ธฐ์ค ๋ธ๋์น
- feature/๊ธฐ๋ฅ์ด๋ฆ: ์ ๊ธฐ๋ฅ ๊ฐ๋ฐ
- fix/๋ฒ๊ทธ์ด๋ฆ: ๋ฒ๊ทธ ์์ ์) ๋ก๊ทธ์ธ ๋ฒํผ ์ถ๊ฐ๋ผ๋ฉด feature/login-button
์ปค๋ฐ ๋ฉ์์ง ๊ฐ๋จ ๊ท์น
- ๋์ฌ๋ก ์์: โAddโฆโ, โFixโฆโ, โUpdateโฆโ
- ๋๋ฌด ๊ธธ๊ฒ ์ฐ์ง ์๊ธฐ
- ํ ์ปค๋ฐ์๋ ํ ๊ฐ์ง ๋ณํ ์) Add login button UI
๋ฐ๋ผํ๊ธฐ: feature ๋ธ๋์น ๋ง๋ค๊ธฐ โ ์์ โ PR โ ๋ณํฉ
์๋๋ ๊ฐ์ฅ ํํ ์๋๋ฆฌ์ค์ ๋๋ค. (GitHub ๊ธฐ์ค์ผ๋ก ์ค๋ช ํ์ง๋ง, GitLab๋ ํ๋ฆ์ ๊ฑฐ์ ๊ฐ์ต๋๋ค.)
1) ์ต์ main์ ๊ธฐ์ค์ผ๋ก ์์ํ๊ธฐ
๋จผ์ ๋ด ๋ก์ปฌ main์ด ์ต์ ์ธ์ง ๋ง์ถฐ์ค๋๋ค.
git checkout main git pull origin main
2) feature ๋ธ๋์น ๋ง๋ค๊ณ ์ด๋ํ๊ธฐ
git checkout -b feature/login-button
์ด์ ๋ถํฐ ๋ณ๊ฒฝ์ ์ด ๋ธ๋์น์๋ง ์์ ๋๋ค. main์ ๊ฑด๋๋ฆฌ์ง ์๋ ๊ฒ ํต์ฌ์ด์์.
3) ์ฝ๋ ์์ ํ ์ํ ํ์ธ
์๋ฅผ ๋ค์ด index.html์ ๋ฒํผ์ ์ถ๊ฐํ๋ค๊ณ ํด๋ณผ๊ฒ์.
git status git diff
- git status: ์ด๋ค ํ์ผ์ด ๋ฐ๋์๋์ง
- git diff: ๋ฌด์์ด ๋ฐ๋์๋์ง
4) ์คํ ์ด์ง(add) โ ์ปค๋ฐ(commit)
git add index.html
git commit -m "Add login button UI"
ํ์ผ์ด ์ฌ๋ฌ ๊ฐ๋ฉด git add .๋ ๊ฐ๋ฅํ์ง๋ง, ์ด๋ณด์๋ ๋ฐ๋ ํ์ผ์ ์ ํํ ์ฐ์ด์ addํ๋ ์ต๊ด์ด ์ค์๋ฅผ ์ค์ฌ์ค๋๋ค.
5) ์๊ฒฉ ์ ์ฅ์๋ก ํธ์(push)
์ฒ์ ์ฌ๋ฆฌ๋ ๋ธ๋์น๋ผ๋ฉด -u ์ต์ ์ ๋ถ์ด๋ ๊ฒ ํธํฉ๋๋ค.
git push -u origin feature/login-button
6) Pull Request(PR) ๋ง๋ค๊ธฐ
์๊ฒฉ ์ ์ฅ์ ํ๋ฉด์์ ๋ณดํต โCompare & pull requestโ ๋ฒํผ์ด ๋น๋๋ค.
PR ์์ฑ ์ ๊ผญ ๋ฃ์ผ๋ฉด ์ข์ ์ ๋ณด:
-
๋ฌด์์ ํ๋์ง(์์ฝ)
-
์ ํ๋์ง(๋ฐฐ๊ฒฝ/์ด์)
-
ํ ์คํธ ๋ฐฉ๋ฒ(์ด๋ป๊ฒ ํ์ธํ๋์ง) ์์)
-
๋ณ๊ฒฝ ๋ด์ฉ: ๋ก๊ทธ์ธ ๋ฒํผ UI ์ถ๊ฐ
-
ํ์ธ ๋ฐฉ๋ฒ: ๋ก์ปฌ์์ ํ์ด์ง ์ด๊ณ ๋ฒํผ ๋ ธ์ถ ํ์ธ
-
์ฃผ์ ์ฌํญ: ๋์(ํด๋ฆญ ์ด๋ฒคํธ)์ ๋ค์ PR์์ ์ถ๊ฐ ์์
7) ๋ฆฌ๋ทฐ ๋ฐ์ ํ ๋ณํฉ(merge)
๋ฆฌ๋ทฐ์์ โ๋ฒํผ ํด๋์ค๋ช ๋ฐ๊ฟ์ฃผ์ธ์โ ๊ฐ์ ํผ๋๋ฐฑ์ด ์ค๋ฉด, ๊ฐ์ ๋ธ๋์น์์ ์์ ํ๊ณ ์ปค๋ฐํ ๋ค ๋ค์ ํธ์ํ๋ฉด PR์ ์๋ ๋ฐ์๋ฉ๋๋ค.
git add index.html
git commit -m "Update button class name"
git push
์น์ธ๋๋ฉด PR ํ๋ฉด์์ Merge๋ฅผ ๋๋ฌ main์ ํฉ์นฉ๋๋ค. ๋ณํฉ ๋ฐฉ์์ ํ๋ง๋ค ๋ค๋ฅด์ง๋ง, ์ด๋ณด์ ํ์์๋ ๋ณดํต ๋ค์ ์ค ํ๋๋ฅผ ์๋๋ค.
- Merge commit: ์ปค๋ฐ ์ด๋ ฅ์ด ๊ทธ๋๋ก ๋จ์(๋ฌด๋)
- Squash and merge: ์ฌ๋ฌ ์ปค๋ฐ์ ํ๋๋ก ํฉ์ณ ๊น๋ํจ(์ด๋ณด์์๊ฒ ์ถ์ฒ๋๋ ๊ฒฝ์ฐ ๋ง์)
์์ฃผ ํฐ์ง๋ ๋ฌธ์ 3๊ฐ์ง์ ํด๊ฒฐ๋ฒ
1) โ๋ด ๋ธ๋์น๊ฐ main๋ณด๋ค ์ค๋๋์ด์โ
์์ ์ค main์ด ๋ง์ด ๋ฐ๋๋ฉด ๋ด ๋ธ๋์น์ main ๋ณ๊ฒฝ์ ๋ฐ์ํด์ผ ์ถฉ๋์ด ์ค์ด๋ญ๋๋ค.
git checkout main git pull origin main git checkout feature/login-button git merge main
์ถฉ๋์ด ๋๋ฉด ํ์ผ์์ ์ถฉ๋ ํ์๋ฅผ ์ ๋ฆฌํ ๋ค:
git add .
git commit -m "Resolve merge conflict"
git push
2) ์๋ชป๋ ๋ธ๋์น์์ ์์ ํ์ด์
์ค์ ๋ก ๋ง์ด ํฉ๋๋ค. ๋นํฉํ์ง ๋ง๊ณ ์์ ๋ด์ฉ์ ์ปค๋ฐํ ๋ค ๋ธ๋์น๋ฅผ ์ฎ๊ธฐ๋ ๋ฐฉ์์ด ์์ ํฉ๋๋ค. (์ํฉ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ด์.) ์ฐ์ ์ค์ ๋ฐฉ์ง๋ฅผ ์ํด git branch๋ก ํ์ฌ ์์น๋ฅผ ์์ฃผ ํ์ธํ์ธ์.
git branch
3) PR์ด ๋๋ฌด ์ปค์ก์ด์
PR์ด ์ปค์ง๋ฉด ๋ฆฌ๋ทฐ๊ฐ ํ๋ค์ด์ง๋๋ค. ๊ธฐ๋ฅ์ ์ชผ๊ฐ์:
- UI PR
- ๋์ PR
- ๋ฆฌํฉํ ๋ง PR ์ฒ๋ผ ์์ ๋จ์๋ก ๋๋๋ ์ต๊ด์ด ํ์์๋ ํ์๋ฐ์ต๋๋ค.
๋ง๋ฌด๋ฆฌ: ์ด๋ณด์์๊ฒ ๊ฐ์ฅ ์ค์ํ 3๊ฐ์ง
- main์ ํญ์ ์์ ์ ์ธ ์ํ๋ก ์ ์งํ๊ธฐ
- ๊ธฐ๋ฅ์ feature ๋ธ๋์น์์๋ง ์์ ํ๊ธฐ
- PR์๋ โ๋ฌด์/์/์ด๋ป๊ฒ ํ์ธโ์ ๋จ๊ธฐ๊ธฐ ์ด ํ๋ฆ๋ง ์์ ์ต์ผ๋ฉด ํ์ ์ด ๊ฐ์๊ธฐ ํธํด์ง๋๋ค. ๋ค์ ๋จ๊ณ๋ก๋ PR ํ ํ๋ฆฟ, ์ฝ๋ ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์คํธ, CI ํ ์คํธ๊น์ง ๋ถ์ด๋ฉด ๋ ๋จ๋จํ ๊ฐ๋ฐ ์ต๊ด์ด ๋ง๋ค์ด์ ธ์.
โฌ๏ธ ์ด ๊ธ์ด ๋์์ด ๋์ จ๋ค๋ฉด, ์๋ ๊ด๊ณ ๋ฅผ ํ ๋ฒ๋ง ํด๋ฆญํด์ฃผ์ธ์! ์ ์๊ฒ ํฐ ํ์ด ๋ฉ๋๋ค ๐โโ๏ธ โฌ๏ธ