๊ฐ๋ฐ ์ด๋ณด์๋ฅผ ์ํ GitHub Pull Request ๋ง๋ค๊ธฐ: ๋ธ๋์น ์์ฑ๋ถํฐ ๋จธ์ง๊น์ง ํ ๋ฒ์
๊ฐ๋ฐ ์ด๋ณด์๋ฅผ ์ํ GitHub Pull Request ๋ง๋ค๊ธฐ: ๋ธ๋์น ์์ฑ๋ถํฐ ๋จธ์ง๊น์ง ํ ๋ฒ์ Pull Request๊ฐ ๋ญ๊ณ , ์ ํ์...
๊ฐ๋ฐ ์ด๋ณด์๋ฅผ ์ํ GitHub Pull Request ๋ง๋ค๊ธฐ: ๋ธ๋์น ์์ฑ๋ถํฐ ๋จธ์ง๊น์ง ํ ๋ฒ์
Pull Request๊ฐ ๋ญ๊ณ , ์ ํ์ํ๊ฐ์?
Pull Request๋ โ์ ๊ฐ ๋ง๋ ๋ณ๊ฒฝ์ฌํญ์ ์ด ๋ธ๋์น์ ํฉ์ณ์ฃผ์ธ์โ๋ผ๊ณ ์์ฒญํ๋ ๊ธฐ๋ฅ์ ๋๋ค. PR์ ์ฐ๋ฉด ๋ค์์ด ์ข์์.
- ๋ณ๊ฒฝ ๋ด์ฉ์ด ํ๋์ ๋น๊ต๋จ(์ถ๊ฐ/์ญ์ ๋ผ์ธ ํ์ธ)
- ๋ฆฌ๋ทฐ ์ฝ๋ฉํธ๋ฅผ ์ฝ๋ ์์์ ๋ฐ๋ก ์ฃผ๊ณ ๋ฐ์
- ์ค์๋ก ๋ฉ์ธ ๋ธ๋์น๋ฅผ ๋ง๊ฐ๋จ๋ฆด ์ํ์ด ์ค์ด๋ฆ
์์ ์ ์ค๋น: ๊ธฐ๋ณธ ์ฉ์ด 3๊ฐ๋ง ์ก๊ณ ๊ฐ๊ธฐ
- main/master: ๋ณดํต ๋ฐฐํฌ ๊ฐ๋ฅํ ์์ ๋ธ๋์น
- feature ๋ธ๋์น: ๋ด๊ฐ ์์ ํ ์ ์ฉ ๋ธ๋์น(์: feature/login)
- upstream / origin: ์๋ณธ ์ ์ฅ์ / ๋ด ํฌํฌ ์ ์ฅ์๋ฅผ ์ฐ๋ ๊ฒฝ์ฐ ๊ตฌ๋ถ๋จ(ํ๋ง๋ค ๋ค๋ฆ)
1) ๋ธ๋์น ๋ง๋ค๊ธฐ(๊ฐ์ฅ ์ค์ํ ์ต๊ด)
๋จผ์ ์ต์ main์ ๊ฐ์ ธ์ค๊ณ , ๊ทธ ๊ธฐ์ค์ผ๋ก ์ ๋ธ๋์น๋ฅผ ๋ง๋ญ๋๋ค.
git checkout main git pull origin main git checkout -b feature/login
๋ธ๋์น ์ด๋ฆ์ ๋ณดํต feature/๊ธฐ๋ฅ, fix/๋ฒ๊ทธ, refactor/์ ๋ฆฌ์ฒ๋ผ ๋ชฉ์ ์ด ๋๋ฌ๋๊ฒ ์๋๋ค. ๋ธ๋์น๋ช ๋ง ๋ด๋ ๋ฌด์จ ์์ ์ธ์ง ๋ณด์ด๋ฉด ํ์ ์ด ํจ์ฌ ํธํด์.
2) ์ฝ๋ ์์ ํ ์ปค๋ฐ: โ์๊ฒ, ์๋ฏธ ์๊ฒโ
์์ ์ ํ๊ณ ๋ณ๊ฒฝ ํ์ผ์ ํ์ธํฉ๋๋ค.
git status git diff
์คํ ์ด์ง ํ ์ปค๋ฐ:
git add .
git commit -m "feat: ๋ก๊ทธ์ธ ํผ ์ ํจ์ฑ ๊ฒ์ฌ ์ถ๊ฐ"
์ปค๋ฐ ๋ฉ์์ง๋ ํ ๊ท์น์ด ์๋ค๋ฉด ์ต์ํ ๋ฌด์์ ํ๋์ง(๋์ฌ+๋์)๊ฐ ๋ณด์ด๊ฒ ์์ฑํด ์ฃผ์ธ์. ์: fix: ๋น๋ฐ๋ฒํธ ๊ธธ์ด ๊ฒ์ฆ ์ค๋ฅ ์์
3) ์๊ฒฉ ๋ธ๋์น์ ํธ์ํ๊ณ PR ๋ง๋ค๊ธฐ
์ฒ์ ํธ์๋ผ๋ฉด upstream ์ค์ ๊น์ง ๊ฐ์ด:
git push -u origin feature/login
์ด์ GitHub์์ Compare & pull request ๋ฒํผ์ด ๋ณด์ด๊ฑฐ๋, Pull requests ํญ์์ ์ PR์ ๋ง๋ค ์ ์์ด์.
PR ์์ฑ ํ(๋ฆฌ๋ทฐ๊ฐ ์ ๋ฌ๋ฆฌ๋ ๊ธ)
-
์ ๋ชฉ: ์์ ๋ชฉ์ ์ด ๋๋ฌ๋๊ฒ ์) ๋ก๊ทธ์ธ ์ ๋ ฅ๊ฐ ๊ฒ์ฆ ์ถ๊ฐ
-
๋ณธ๋ฌธ(์์ ํ ํ๋ฆฟ):
## ๋ณ๊ฒฝ ๋ด์ฉ - ๋ก๊ทธ์ธ ํผ์ ์ด๋ฉ์ผ/๋น๋ฐ๋ฒํธ ์ ํจ์ฑ ๊ฒ์ฌ ์ถ๊ฐ - ์๋ฌ ๋ฉ์์ง UI ํ์ ## ํ ์คํธ ๋ฐฉ๋ฒ 1) ๋ก๊ทธ์ธ ํ์ด์ง ์ ์ 2) ์ด๋ฉ์ผ ํ์์ด ์๋ ๋ ์๋ฌ ๋ฉ์์ง ํ์ธ 3) ๋น๋ฐ๋ฒํธ 8์ ๋ฏธ๋ง ์ ๋ ฅ ์ ์๋ฌ ํ์ธ ## ์ฐธ๊ณ - ๊ด๋ จ ์ด์: #12
์ฌ๊ธฐ์ ํต์ฌ์ ๋ฆฌ๋ทฐ์ด๊ฐ ์ฌํํ ์ ์๊ฒ โํ ์คํธ ๋ฐฉ๋ฒโ์ ์ ๋ ๊ฒ์ ๋๋ค. ์ด ํ ์ค์ด ๋ฆฌ๋ทฐ ์๋๋ฅผ ํฌ๊ฒ ์ฌ๋ ค์ค์.
4) ์ฝ๋ ๋ฆฌ๋ทฐ ๋ฐ๊ธฐ: ์ฝ๋ฉํธ ๋์ ์๋ น
๋ฆฌ๋ทฐ ์ฝ๋ฉํธ๊ฐ ๋ฌ๋ฆฌ๋ฉด ๋นํฉํ์ง ๋ง๊ณ , ๋จผ์ ์๋๋ฅผ ํ์ธํ์ธ์.
- ๋จ์ ์์ ์์ฒญ: ๋ฐ๋ก ๋ฐ์ ํ ์ปค๋ฐ
- ๋ ผ์๊ฐ ํ์ํ ์๊ฒฌ: ์ ๊ทธ๋ ๊ฒ ํ๋์ง ์ค๋ช ํ๊ณ ๋์ ์ ์ ์์ ํ์๋ ๊ฐ์ ๋ธ๋์น์ ์ปค๋ฐํด์ ๋ค์ ํธ์ํ๋ฉด PR์ ์๋์ผ๋ก ๋ฐ์๋ฉ๋๋ค.
git add .
git commit -m "refactor: ์ ํจ์ฑ ๊ฒ์ฌ ํจ์ ๋ถ๋ฆฌ"
git push
๋ฆฌ๋ทฐ ์ฝ๋ฉํธ๋ GitHub์์ Resolve conversation์ผ๋ก ์ ๋ฆฌํด๋๋ฉด, โ์ด PR์ ์ ๋ฆฌ๋์๊ตฌ๋โ๊ฐ ํ๋์ ๋ณด์ฌ์.
5) ์ถฉ๋(conflict) ์์ด ๋จธ์งํ๋ ค๋ฉด: ์ต์ main ๋ฐ์
๋ฆฌ๋ทฐ ๋ฐ๋ ๋์ main์ด ์ ๋ฐ์ดํธ๋๋ฉด ๋ด ๋ธ๋์น๋ ์ต์ ์ผ๋ก ๋ง์ถ๋ ๊ฒ ์ข์ต๋๋ค.
๋ฐฉ๋ฒ A) merge๋ก ๋ฐ์(์ด๋ณด์์๊ฒ ์์ )
git checkout feature/login git fetch origin git merge origin/main
์ถฉ๋์ด ๋๋ฉด Git์ด ํ์ํ ํ์ผ์ ์ด๊ณ , ์ถฉ๋ ํ์(<<<<<<)์ ์ ๋ฆฌํ ๋ค ์ปค๋ฐํฉ๋๋ค.
๋ฐฉ๋ฒ B) rebase(ํ์คํ ๋ฆฌ๋ฅผ ๊น๋ํ๊ฒ, ํ ํฉ์ ํ์)
ํ์์ rebase๋ฅผ ์ฐ๋ ๋ฌธํ๋ผ๋ฉด ์งํํ๋, ์ต์ํ์ง ์๋ค๋ฉด ๋จผ์ ๋ฌผ์ด๋ณด๋ ๊ฒ ์์ ํฉ๋๋ค.
6) ๋จธ์ง ๋ฐฉ์ ์ ํ: Squash / Merge / Rebase
PR์ด ์น์ธ๋๋ฉด ๋จธ์ง ๋ฒํผ์ ๋๋ฅด๊ฒ ๋ฉ๋๋ค. ์ ์ฅ์ ์ค์ ์ ๋ฐ๋ผ ์ต์ ์ด ๋ณด์ผ ์ ์์ด์.
- Squash and merge: ์ปค๋ฐ์ด ์ฌ๋ฌ ๊ฐ๋ผ๋ 1๊ฐ๋ก ํฉ์ณ ๋จธ์ง(๋ง์ด ์ฌ์ฉ)
- Create a merge commit: ๋จธ์ง ์ปค๋ฐ์ ๋จ๊น(ํ๋ฆ์ด ๋ช ํ)
- Rebase and merge: ์ ํ ํ์คํ ๋ฆฌ(ํ ๊ท์น ์ค์) ์ด๋ณด์๋ผ๋ฉด ํ์์ ์์ฃผ ์ฐ๋ ๋ฐฉ์์ ๊ทธ๋๋ก ๋ฐ๋ฅด๋ ๊ฒ ์ ๋ต์ ๋๋ค.
๋ง๋ฌด๋ฆฌ: ์ด๋ณด์๊ฐ ์์ฃผ ํ๋ ์ค์ 3๊ฐ์ง
- main์์ ๋ฐ๋ก ์์ ํ๊ธฐ โ ๋ฐ๋์ feature ๋ธ๋์น ์ฌ์ฉ
- PR์ ์ค๋ช ์์ด ํ์ผ๋ง ๋์ง๊ธฐ โ ๋ณ๊ฒฝ ๋ด์ฉ/ํ ์คํธ ๋ฐฉ๋ฒ ์ ๊ธฐ
- ๋ฆฌ๋ทฐ ์ฝ๋ฉํธ๋ฅผ ๊ฐ์ธ ๊ณต๊ฒฉ์ฒ๋ผ ๋ฐ์๋ค์ด๊ธฐ โ ์ฝ๋ ํ์ง์ ๊ฐ์ด ์ฌ๋ฆฌ๋ ๊ณผ์ ์ด ํ๋ฆ๋ง ์ตํ๋ฉด, GitHub PR์ โ๋ฌด์์ด ์ ์ฐจโ๊ฐ ์๋๋ผ ์์ ํ ํ์ ๋ฃจํด์ด ๋ฉ๋๋ค. ๋ค์ PR์์๋ ์ ๋ชฉ๊ณผ ํ ์คํธ ๋ฐฉ๋ฒ๋ง์ด๋ผ๋ ๊น๋ํ๊ฒ ์จ๋ณด์ธ์. ๋ฆฌ๋ทฐ๊ฐ ํจ์ฌ ๋ถ๋๋ฝ๊ฒ ๋์๊ฐ ๊ฑฐ์์.
โฌ๏ธ ์ด ๊ธ์ด ๋์์ด ๋์ จ๋ค๋ฉด, ์๋ ๊ด๊ณ ๋ฅผ ํ ๋ฒ๋ง ํด๋ฆญํด์ฃผ์ธ์! ์ ์๊ฒ ํฐ ํ์ด ๋ฉ๋๋ค ๐โโ๏ธ โฌ๏ธ