Pull Request
Pull Request(PR)๋ ๊ฐ๋ฐ์๊ฐ ํ๋ก์ ํธ์ ์ฝ๋ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ํ๊ณ ๊ฒํ ๋ฐ๋ ๊ณผ์ ์
๋๋ค.
์ฃผ์ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
โข
์ฝ๋ ๋ฆฌ๋ทฐ: ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค์ด ๋ณ๊ฒฝ์ฌํญ์ ๊ฒํ ํ๊ณ ํผ๋๋ฐฑ์ ์ ๊ณตํฉ๋๋ค.
โข
ํ์
์ด์ง: ํ์๋ค ๊ฐ์ ์ํต๊ณผ ์ง์ ๊ณต์ ๋ฅผ ์ฆ์ง์ํต๋๋ค.
โข
ํ์ง ๊ด๋ฆฌ: ๋ฒ๊ทธ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ๊ณ ์ฝ๋ ํ์ง์ ํฅ์์ํต๋๋ค.
โข
๋ณ๊ฒฝ ์ด๋ ฅ ๊ด๋ฆฌ: ํ๋ก์ ํธ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ฒด๊ณ์ ์ผ๋ก ์ถ์ ํฉ๋๋ค.
PR์ ํจ๊ณผ์ ์ธ ํ์
๊ณผ ์ฝ๋ ํ์ง ํฅ์์ ์ํ ์ค์ํ ๋๊ตฌ์
๋๋ค.
Pull Request ํ๋ ๋ฐฉ๋ฒ
1.
์๋ก์ด ๋ธ๋์น ์์ฑ: ๋จผ์ ์์
ํ ์๋ก์ด ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค.
2.
์ฝ๋ ๋ณ๊ฒฝ: ์ ๋ธ๋์น์์ ํ์ํ ์ฝ๋ ๋ณ๊ฒฝ์ ์ํํฉ๋๋ค.
3.
๋ณ๊ฒฝ์ฌํญ ์ปค๋ฐ: ๋ณ๊ฒฝ๋ ์ฝ๋๋ฅผ ์ปค๋ฐํฉ๋๋ค.
4.
GitHub์ ํธ์: ๋ก์ปฌ ๋ธ๋์น๋ฅผ GitHub ์๊ฒฉ ์ ์ฅ์์ ํธ์ํฉ๋๋ค.
5.
Pull Request ์์ฑ: GitHub์์ 'New Pull Request' ๋ฒํผ์ ํด๋ฆญํ์ฌ PR์ ์์ฑํฉ๋๋ค.
6.
PR ์ค๋ช
์์ฑ: ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ์์ธํ ์ค๋ช
์ ์์ฑํฉ๋๋ค.
7.
๋ฆฌ๋ทฐ์ด ์ง์ : ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์ํํ ํ์์ ์ง์ ํฉ๋๋ค.
8.
PR ์ ์ถ: 'Create Pull Request' ๋ฒํผ์ ํด๋ฆญํ์ฌ PR์ ์ ์ถํฉ๋๋ค.
์ดํ ์ง์ ๋ ๋ฆฌ๋ทฐ์ด๋ค์ด ์ฝ๋๋ฅผ ๊ฒํ ํ๊ณ , ํ์ํ ๊ฒฝ์ฐ ์์ ์ ์์ฒญํ๊ฑฐ๋ ์น์ธํฉ๋๋ค. ๋ชจ๋ ๋ฆฌ๋ทฐ๊ฐ ์๋ฃ๋๋ฉด PR์ ๋ฉ์ธ ๋ธ๋์น์ ๋ณํฉ๋ ์ ์์ต๋๋ค.
๋ฆฌ๋ทฐ์ด ์ง์ ํ๊ธฐ
Pull Request์์ ์ ์ ํ ๋ฆฌ๋ทฐ์ด๋ฅผ ์ง์ ํ๋ ๊ฒ์ ์ฝ๋ ํ์ง ํฅ์๊ณผ ํจ๊ณผ์ ์ธ ํ์
์ ์ํด ์ค์ํฉ๋๋ค. ๋ค์์ ๋ฆฌ๋ทฐ์ด๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ณ ๋ ค์ฌํญ์
๋๋ค:
1.
GitHub์ PR ํ์ด์ง์์ 'Reviewers' ์น์
์ ์ฐพ์ต๋๋ค.
2.
ํ์ ๋ชฉ๋ก์์ ์ ํฉํ ๋ฆฌ๋ทฐ์ด๋ฅผ ์ ํํฉ๋๋ค.
3.
ํ์ํ ๊ฒฝ์ฐ ์ฌ๋ฌ ๋ช
์ ๋ฆฌ๋ทฐ์ด๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
๋ฆฌ๋ทฐ์ด ์ ํ ์ ๊ณ ๋ ค์ฌํญ:
โข
์ฝ๋ ๋ณ๊ฒฝ ์์ญ์ ๋ํ ์ ๋ฌธ์ฑ์ ๊ฐ์ง ํ์์ ์ ํํฉ๋๋ค.
โข
ํ ๋ด ์ง์ ๊ณต์ ๋ฅผ ์ํด ๋ค์ํ ๊ฒฝํ ์์ค์ ๋ฆฌ๋ทฐ์ด๋ฅผ ํฌํจ์ํต๋๋ค.
โข
์ํฌ๋ก๋๋ฅผ ๊ณ ๋ คํ์ฌ ๊ท ํ์๊ฒ ๋ฆฌ๋ทฐ์ด๋ฅผ ๋ฐฐ์ ํฉ๋๋ค.
์ ์ ํ ๋ฆฌ๋ทฐ์ด ์ง์ ์ ํจ์จ์ ์ธ ์ฝ๋ ๋ฆฌ๋ทฐ ํ๋ก์ธ์ค๋ฅผ ๋ณด์ฅํ๊ณ , ํ ์ ์ฒด์ ์ฝ๋ ํ์ง ํฅ์์ ๊ธฐ์ฌํฉ๋๋ค.
๋ฆฌ๋ทฐ์ด ์ง์ ๋ฐ ์ฝ๋ ๋ฆฌ๋ทฐ ํ ๋จธ์ง ์ทจ์ํ๊ธฐ
๋ฆฌ๋ทฐ์ด๋ฅผ ์ง์ ํ๊ณ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ์ ํ, ํ์ํ ๊ฒฝ์ฐ ๋จธ์ง๋ฅผ ์ทจ์ํ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
1.
๋ฆฌ๋ทฐ์ด ์ง์ : PR ํ์ด์ง์์ 'Reviewers' ์น์
์ ์ ์ ํ ๋ฆฌ๋ทฐ์ด๋ฅผ ์ ํํฉ๋๋ค.
2.
์ฝ๋ ๋ฆฌ๋ทฐ ์งํ: ์ง์ ๋ ๋ฆฌ๋ทฐ์ด๊ฐ ์ฝ๋๋ฅผ ๊ฒํ ํ๊ณ ํผ๋๋ฐฑ์ ์ ๊ณตํฉ๋๋ค.
3.
ํผ๋๋ฐฑ ๋ฐ์: ๋ฆฌ๋ทฐ์ด์ ์๊ฒฌ์ ๊ฒํ ํ๊ณ ํ์ํ ์์ ์ฌํญ์ ๋ฐ์ํฉ๋๋ค.
4.
๋ฆฌ๋ทฐ ์น์ธ: ๋ชจ๋ ์์ ์ฌํญ์ด ๋ฐ์๋๋ฉด ๋ฆฌ๋ทฐ์ด๊ฐ PR์ ์น์ธํฉ๋๋ค.
5.
๋จธ์ง ์งํ: ์ผ๋ฐ์ ์ผ๋ก ์ด ๋จ๊ณ์์ PR์ ๋ฉ์ธ ๋ธ๋์น์ ๋จธ์งํฉ๋๋ค.
6.
๋จธ์ง ์ทจ์ ๊ฒฐ์ : ๋จธ์ง ํ ๋ฌธ์ ๊ฐ ๋ฐ๊ฒฌ๋๊ฑฐ๋ ์ถ๊ฐ ์์ ์ด ํ์ํ ๊ฒฝ์ฐ, ๋จธ์ง ์ทจ์๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
7.
Revert PR ์์ฑ: GitHub์์ ํด๋น PR์ 'Revert' ๋ฒํผ์ ํด๋ฆญํ์ฌ ์๋ก์ด PR์ ์์ฑํฉ๋๋ค.
8.
Revert PR ๊ฒํ : ํ์๋ค๊ณผ ํจ๊ป Revert PR์ ๊ฒํ ํฉ๋๋ค.
9.
Revert ๋จธ์ง: ๊ฒํ ๊ฐ ์๋ฃ๋๋ฉด Revert PR์ ๋จธ์งํ์ฌ ์ด์ ๋ณ๊ฒฝ์ฌํญ์ ์ทจ์ํฉ๋๋ค.
์ด ๊ณผ์ ์ ํตํด ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ๊ณ ํ์ํ ๊ฒฝ์ฐ ์์ ํ๊ฒ ๋จธ์ง๋ฅผ ์ทจ์ํ ์ ์์ต๋๋ค. ๋จธ์ง ์ทจ์๋ ์ ์คํ๊ฒ ๊ฒฐ์ ํด์ผ ํ๋ฉฐ, ํ์๋ค๊ณผ์ ์ถฉ๋ถํ ๋
ผ์๊ฐ ํ์ํฉ๋๋ค.
๋จธ์ง ์ทจ์์ PR ์ํ
๋จธ์ง ์ทจ์(Revert)๋ PR์ 'Closed' ์ํ๋ก ๋ง๋ค์ง ์์ต๋๋ค. ๋์ , ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ด ์ผ์ด๋ฉ๋๋ค:
1.
์๋ PR์ 'Merged' ์ํ๋ฅผ ์ ์งํฉ๋๋ค.
2.
์๋ก์ด 'Revert' PR์ด ์์ฑ๋์ด 'Open' ์ํ๊ฐ ๋ฉ๋๋ค.
3.
์ด 'Revert' PR์ด ์น์ธ๋๊ณ ๋จธ์ง๋๋ฉด, ์๋ ๋ณ๊ฒฝ์ฌํญ์ด ์ทจ์๋ฉ๋๋ค.
๋ฐ๋ผ์, ๋จธ์ง ์ทจ์ ๊ณผ์ ์์๋ ์๋ก์ด PR์ด ์์ฑ๋๋ฉฐ, ์ด PR์ ๋ชฉ์ ์ ์ด์ ๋ณ๊ฒฝ์ฌํญ์ ๋๋๋ฆฌ๋ ๊ฒ์
๋๋ค. ์๋์ PR์ ์ฌ์ ํ ๋จธ์ง๋ ์ํ๋ก ํ์คํ ๋ฆฌ์ ๋จ์์๊ฒ ๋ฉ๋๋ค.