๊ณต๋ถํ๊ฒ ๋ ์ํฉ
์๋ก์ด ํ ํ๋ก์ ํธ๊ฐ ์์๋๊ณ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ธฐ ์ํด Git Repository๋ฅผ ์์ฑํ๋ค.
๊ทผ๋ฐ ์ด์ ๋ถํฐ main ๋ธ๋์น๊ฐ ์๋ ๊ฐ๊ฐ์ ๋ธ๋์น๋ฅผ ์์ฑํด์ ์์
์ ์งํํ๊ณ Pull Request๋ฅผ ์งํํด์ผ ํ๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์๋ค.
๊ทธ๋์ Pull Reqeust๋ฅผ ์ ๋ชจ๋ฅด๋ ๋์ ํ์์ ์ํด ํ์ฅ๋์ด ์ค๋ช
ํด์ฃผ์
จ๊ณ ์ดํด๊ฐ ์๋์ Pull Request์ ํ๋ฆ๊น์ง ์ ์ ์์๋ค.
1. ํ์๋ถ์ Pull Request๋ฅผ ํตํด dev ๋ธ๋์น๊ฐ ์
๋ฐ์ดํธ๋๋ค.
2. ๋ด๊ฐ ๋ค๋ฅธ ๋ธ๋์น์์ ์์
์ ํ๋ค๊ฐ git pull origin dev๋ก ๋ด Local์ ์ต์ ํํ๋ค.
3. ํ์ฌ ์์
ํ๊ณ ์๋ ๋ธ๋์น์์ git rebase dev ๋ช
๋ น์ด๋ก ์์
ํ๊ณ ์๋ ๋ธ๋์น๋ ์ต์ ํํ๋ค.
4. ์์
ํ๊ณ ์๋ ๋ธ๋์น๋ฅผ GitHub์ pushํ๊ณ Pull Request๋ฅผ ์งํํ๋ค.
๋ด๊ฐ Pull Request๋ฅผ ์ฌ๋ฆฌ๊ธฐ ์ง์ ์ dev ๋ธ๋์น๊ฐ ์
๋ฐ์ดํธ ๋์ด์๋์ง ํ์ธํ๊ณ ,
์
๋ฐ์ด๊ฐ ๋์ด์๋ค๋ฉด 2, 3๋ฒ์ ์ํํ๊ณ Pull Request๋ฅผ ์งํํ๋ค.
๋ก Pull Request์ ๋ํด ์ดํดํ์ง๋ง ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ๋์ GitHub์์ ๋งํ๋ ๋ถ์์ฌ๋ฅผ ๋ง๊ธฐ ์ํด ๋ ์ฐพ์๋ณด๊ธฐ๋ก ํ๋ค!
PR(Pull Request)์ ์ ์์ ๋ชฉ์
์๋ ๊ทธ๋๋ก ํ์ด์ ๋งํ์๋ฉด '์๋ฒ์ ์
๋ฐ์ดํธ ๋์ด ์๋ ๋ด์ฉ์ ๋ฐ์์ ์ฃผ์ธ์!' ๋ผ๋ ์์ฒญ์ด๋ค.
๋ด๊ฐ ์์ ํ ์ฝ๋๊ฐ ์์ผ๋ ๋ด ๋ธ๋์น๋ฅผ ๊ฐ์ ธ๊ฐ ๊ฒํ ํ ๋ณํฉํด์ฃผ๋ผ๊ณ ์์ฒญํด์ฃผ๋ ๊ฒ์ด๋ค.
Pull Request๋ฅผ ํตํด ์ฝ๋ ์ถฉ๋์ ์ต์ํํ ์ ์๊ณ push ๊ถํ์ด ์๋ ์คํ ์์ค ํ๋ก์ ํธ์ ๊ธฐ์ฌํ ๋ ๋ง์ด ์ฌ์ฉํ๋ค.
์ฝ๋๋ฅผ ๋ณํฉํ๋ ๊ณผ์ ์์ ์๋ก ์ฝ๋๋ ํ์ธํ ์ ์๊ณ , ์ด๋ค ๋ถ๋ถ์ ์์ ํ๋์ง๋ ํ์ธํ ์ ์๋๋ก Pull Reqeust๋ฅผ ์งํํ๋ ๊ฒ์ด๋ค.
Pull Request ์ฌ์ฉ ๋ฐฉ๋ฒ
1. ์์
ํ ๋ธ๋์น๋ฅผ ์์ฑํ๋ค.
2. ์์
ํ๋ ๋์ค์ ํ์์ Pull Request๊ฐ ๋ฐ์ํ๋ค. → git pull origin dev๋ฅผ ํตํด ์์ ์ฌํญ์ ๋ง์ถฐ์ค๋ค.
3. ํ์ฌ ์์
ํ๊ณ ์๋ ๋ธ๋์น์์ ์์ ์ ์๋ฃํ๋ค.
4. git add, commit, push๋ฅผ ์งํํ๋ค.
5. compare & Pull Request๋ฅผ ์งํํ๋ค.
6. ์์ ๋ ๋ถ๋ถ์ ๋ํด์ ํ์ํ comment๋ฅผ ์์ฑํ๊ณ create pull request๋ฅผ ์งํํ๋ค.
7. merge๋ฅผ ํ๋ค.
8. ์ฌ์ฉํ๋ ๋ธ๋์น๋ ์ญ์ ํ๋ค. → ๋ธ๋์น๊ฐ ๋ง์ด ์กด์ฌํ ๊ฒฝ์ฐ ํผ๋์ด ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ๋ ๋ธ๋์น๋ ์ญ์ ํ๋ค.
Fork
๋ด๊ฐ ๋ค๋ฅธ ์ฌ๋์ ์ ์ฅ์์ ์๋ ์ฝ๋๋ฅผ ์์ ํ๊ฑฐ๋, ๋ค๋ฅธ ์ฌ๋์ ์ ์ฅ์์ ์ฝ๋๋ฅผ ๋ด๊ฐ ์์ ํ๋ ค๋ฉด ๊ด๋ฆฌ์๊ฐ ์ง์ ๋๋ฅผ ๊ธฐ์ฌ์(Contribute)๋ก ๋ฑ๋ก์ด ๋์ด์์ด์ผ ํ๋ค. ํ์ง๋ง ๋ชจ๋ ์ฌ๋์ ๋ค Contribute๋ก ๋ฑ๋กํ ์๋ ์๋ ํ์ค์ด๋ค. ์ด๋ ์ฌ์ฉํ๋ ๊ฒ์ด Fork์ด๋ค.
ํฌํฌ๋ก ์ฟก ์ฐ๋ฌ ๊ฐ์ ธ์ค๋ฏ ๋ค๋ฅธ ์ฌ๋์ ์ ์ฅ์์ ์๋ Repository๋ฅผ ๋ด ์๊ฒฉ ์ ์ฅ์, GitHub๋ก ๊ฐ์ ธ์ค๋ ๊ฒ์ด๋ค.
Fork: Repository๋ฅผ ์๊ฒฉ์ ์ฅ์์ ๋ณต์ฌํ๋ค.
Clone: Repository๋ฅผ ๋ก์ปฌ์ ์ฅ์์ ๋ณต์ฌํ๋ค.
Fork๊ฐ ํฌํจ๋ ์ฌ์ฉ ๋ฐฉ๋ฒ
1. ๋ด ์๊ฒฉ Repository์ Fork๋ฅผ ์งํํ๋ค.
2. clone์ ์ค์ ํ๋ค.
3. remote๋ฅผ ์ค์ ํ๋ค.
4. branch๋ฅผ ์์ฑํ๋ค.
5. ์์ ์์
ํ add, commit, pushํ๋ค.
6. Pull Request ์์ฑํ๋ค.
7. Merge Pull Request ์งํํ๋ค.
8. Merge ์ดํ ๋๊ธฐํ ๋ฐ branch๋ฅผ ์ญ์ ํ๋ค.
๊ฒฐ๋ก
Pull Request์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ ํ์ ์์ ์ค์ํ ์์ ์ ์ฝ๋๋ฅผ ์์ ํ ์ดํ์ ๊ฐ๋ฐ์๋ค๋ผ๋ฆฌ ํ์ธ์ด ๊ฐ๋ฅํ๊ณ ์์ ํ ๋ถ๋ถ์ ๋ํ ์ค๋ช ๊น์ง ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด๋ค. ๋ํ ์ต์ข ์ ์ธ ๊ฒํ ๋ฅผ ๋ง์น ํ์ Merge๋ฅผ ํ ๊ฒฝ์ฐ ์๋กญ๊ฒ ์ ๋ฐ์ดํธ ๋ ํ์ผ์ด ํ์ํ๊ฒ ๋๋ค.
ํผ์์๋ ์ฌ๋ฌ ๋ฒ ๋ธ๋์น๋ฅผ ์์ฑํ ํ Pull Request๋ฅผ ์ฌ์ฉํด๋ณด๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด๋ค.
์ฐธ๊ณ ๋ธ๋ก๊ทธ
https://wayhome25.github.io/git/2017/07/08/git-first-pull-request-story/
https://velog.io/@minrami1115/PRPull-Request๋
https://holika.tistory.com/entry/Git-์ฝ์ง๊ธฐ๋ก-PR์-์ฌ๋ฆฌ๋ค-Pull-Request์-๋ํด์