๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ์ธ ๊ณต๋ถ€/GitHub

Pull Request

by carrot0911 2024. 12. 22.

๊ณต๋ถ€ํ•˜๊ฒŒ ๋œ ์ƒํ™ฉ

์ƒˆ๋กœ์šด ํŒ€ ํ”„๋กœ์ ํŠธ๊ฐ€ ์‹œ์ž‘๋˜๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด 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/

 

git ์ดˆ๋ณด๋ฅผ ์œ„ํ•œ ํ’€๋ฆฌํ€˜์ŠคํŠธ(pull request) ๋ฐฉ๋ฒ• · ์ดˆ๋ณด๋ชฝํ‚ค์˜ ๊ฐœ๋ฐœ๊ณต๋ถ€๋กœ๊ทธ

๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด ์ฝ”๋“œ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋ณต์‚ฌํ•ด์•ผ ํ•˜๋Š” ์ผ์ด ์ž์ฃผ ์ƒ๊ธด๋‹ค. ์ฝ”๋“œ๋ฅผ ํ†ต์งธ๋กœ ๋ณต์‚ฌํ•˜๊ณ  ๋‚˜์„œ ์›๋ž˜ ์ฝ”๋“œ์™€๋Š” ์ƒ๊ด€์—†์ด ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋Š”

wayhome25.github.io

https://velog.io/@minrami1115/PRPull-Request๋ž€

 

PR(Pull Request)๋ž€ ?

์•ˆ๋…•ํ•˜์„ธ์š”. ๋ฏผ ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ github์œผ๋กœ ์ˆ˜์ •์„ ํ•˜๊ฑฐ๋‚˜ ํ˜‘์—…์„ ์ง„ํ–‰ํ•˜์‹ค๊ฒฝ์šฐ์— ์ด๊ฑฐ PRํ•ด์„œ ์˜ฌ๋ ค์ฃผ์‹œ๋ฉด ๋ผ์š”. ๋ผ๋Š” ๋ง์„ ๋“ค์œผ์…จ์„๋•Œ ๋‚œํ•ดํ•˜์‹  ์ƒํ™ฉ์ด ๋ฐœ์ƒํ• ํ…๋ฐ ๐Ÿ˜‚ ๊ทธ๋Ÿฐ ์ƒํ™ฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„

velog.io

https://holika.tistory.com/entry/Git-์‚ฝ์งˆ๊ธฐ๋ก-PR์„-์˜ฌ๋ฆฌ๋‹ค-Pull-Request์—-๋Œ€ํ•ด์„œ

 

[Git ์‚ฝ์งˆ๊ธฐ๋ก] 'PR์„ ์˜ฌ๋ฆฌ๋‹ค'? Pull Request์— ๋Œ€ํ•ด์„œ

์„œ๋ก  ์ด์ „ ๊ธ€์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ๊ณผ์ œ๋ฅผ Forkํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€, ์–ด์ฐŒ์–ด์ฐŒ Fork๋ฅผ ํ•˜๊ณ  ์ž‘์—…์„ ์‹œ์ž‘ํ–ˆ๋‹ค. BUT, git๊ณผ์˜ ์ „์Ÿ์€ ์—ฌ๊ธฐ์„œ ๋์ด ์•„๋‹ˆ์—ˆ๋‹ค. ๋‚˜๋Š” ๋˜ ์ด๋Ÿฐ ๋ง์„ ๋“ฃ๊ฒŒ ๋œ๋‹ค. "์ž‘์—…ํ•œ

holika.tistory.com