๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํ˜‘์—…์„ ์œ„ํ•œ Fork์™€ Pull Request: GitHub๋กœ ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ•˜๋Š” ๋ฒ• ๐ŸŒ

okrestart 2024. 10. 30.

 

์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ•˜๊ฑฐ๋‚˜, ํŒ€ ํ”„๋กœ์ ํŠธ์—์„œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด GitHub์˜ Fork์™€ Pull Request ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Fork๋Š” ์›๋ณธ ์ €์žฅ์†Œ์˜ ๋ณต์‚ฌ๋ณธ์„ ์ž์‹ ์˜ ์ €์žฅ์†Œ์— ์ƒ์„ฑํ•˜๋Š” ์ž‘์—… ์ด๋ฉฐ, Pull Request๋Š” ์ˆ˜์ •ํ•œ ์ฝ”๋“œ๋ฅผ ์›๋ณธ ํ”„๋กœ์ ํŠธ์— ๋ฐ˜์˜ํ•ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•˜๋Š” ์ ˆ์ฐจ ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Fork์™€ Pull Request์˜ ๊ฐœ๋…, ํ™œ์šฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๊ณผ์ •์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

1. Fork๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

Fork(ํฌํฌ) ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ €์žฅ์†Œ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ์ž์‹ ์˜ GitHub ๊ณ„์ •์œผ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. Fork๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ•˜๊ณ ์ž ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”„๋กœ์ ํŠธ์˜ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ณ ์ž ํ•  ๋•Œ Fork๋ฅผ ํ†ตํ•ด ์ž‘์—…์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Fork์˜ ํ•„์š”์„ฑ

  • ๋…๋ฆฝ์ ์ธ ์ž‘์—… ๊ณต๊ฐ„ : Fork๋ฅผ ํ†ตํ•ด ์›๋ณธ ํ”„๋กœ์ ํŠธ๋ฅผ ์†์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐœ๋ณ„ ์ €์žฅ์†Œ๋กœ ์ €์žฅ : ๊ฐœ์ธ ๊ณ„์ •์— ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ์ž์œ ๋กญ๊ฒŒ ์ˆ˜์ • ํ•˜๊ณ  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ์—ฌ์™€ ํ˜‘์—…์˜ ๊ธฐ๋ณธ ๋‹จ๊ณ„ : ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

GitHub์—์„œ Fork ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ์›๋ณธ ์ €์žฅ์†Œ์˜ ๋ณต์‚ฌ๋ณธ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ณต์‚ฌ๋ณธ์—์„œ ์ž์œ ๋กญ๊ฒŒ ์ž‘์—…ํ•œ ํ›„ Pull Request๋ฅผ ํ†ตํ•ด ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

2. ํ”„๋กœ์ ํŠธ Forkํ•˜๊ธฐ: ๋‹จ๊ณ„๋ณ„ ๊ฐ€์ด๋“œ

GitHub์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ Forkํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ๋‹จ๊ณ„๋ณ„ ๊ฐ€์ด๋“œ๋ฅผ ํ†ตํ•ด ์ง„ํ–‰ํ•ด๋ณด์„ธ์š”.

  1. Forkํ•  ์ €์žฅ์†Œ๋กœ ์ด๋™ : GitHub์—์„œ Forkํ•˜๊ณ  ์‹ถ์€ ์ €์žฅ์†Œ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  2. Fork ๋ฒ„ํŠผ ํด๋ฆญ : ํŽ˜์ด์ง€ ์šฐ์ธก ์ƒ๋‹จ์˜ Fork ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ๊ฐœ์ธ ์ €์žฅ์†Œ์— Fork ์ƒ์„ฑ : Fork๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๊ฐœ์ธ GitHub ๊ณ„์ •์— ํ•ด๋‹น ์ €์žฅ์†Œ์˜ ๋ณต์‚ฌ๋ณธ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  4. ๋กœ์ปฌ ํ™˜๊ฒฝ์œผ๋กœ ๋ณต์ œ : ์ž์‹ ์˜ ๊ณ„์ •์— Forkํ•œ ์ €์žฅ์†Œ๋ฅผ ๋กœ์ปฌ ํ™˜๊ฒฝ์— ํด๋ก ํ•˜์—ฌ ์ž‘์—…์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
git clone https://github.com/username/forked-repository.git

์ด์ œ ๋ณต์ œํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

3. Pull Request ์ƒ์„ฑํ•˜๊ธฐ: ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ•˜๊ธฐ

Forkํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ์ž‘์—…์„ ์™„๋ฃŒํ–ˆ๋‹ค๋ฉด, Pull Request(PR)๋ฅผ ํ†ตํ•ด ์›๋ณธ ํ”„๋กœ์ ํŠธ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Pull Request๋Š” ์›๋ณธ ์ €์žฅ์†Œ์˜ ๊ด€๋ฆฌ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ  ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

Pull Request ์ƒ์„ฑ ๋ฐฉ๋ฒ•

  1. ์ƒˆ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ : ๊ธฐ๋Šฅ์ด๋‚˜ ์ˆ˜์ • ์ž‘์—…์„ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. bash git checkout -b feature-new-ui
  2. ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ปค๋ฐ‹ : ์ฝ”๋“œ ์ˆ˜์ •์ด๋‚˜ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ์ž‘์—…์„ ์™„๋ฃŒํ•œ ํ›„, ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค. bash git add . git commit -m "์ƒˆ UI ๊ธฐ๋Šฅ ์ถ”๊ฐ€"
  3. ์›๊ฒฉ ์ €์žฅ์†Œ๋กœ ํ‘ธ์‹œ : ์ˆ˜์ •ํ•œ ๋ธŒ๋žœ์น˜๋ฅผ ์ž์‹ ์˜ GitHub ์ €์žฅ์†Œ์— ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค. bash git push origin feature-new-ui
  4. Pull Request ์ƒ์„ฑ : GitHub์—์„œ Pull Request ํƒญ์œผ๋กœ ์ด๋™ํ•˜์—ฌ ์ƒˆ๋กœ์šด PR์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. PR ์ œ๋ชฉ๊ณผ ์„ค๋ช…์„ ์ž‘์„ฑํ•˜๊ณ , ์ž‘์—… ๋‚ด์šฉ๊ณผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ƒ์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

 


 

4. ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ํ†ตํ•œ ํ˜‘์—… ํ”„๋กœ์„ธ์Šค

Pull Request๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ์ž๋‚˜ ํŒ€์›๋“ค์ด ์ฝ”๋“œ๋ฅผ ๋ฆฌ๋ทฐ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์„ ํ†ตํ•ด ์ฝ”๋“œ์˜ ํ’ˆ์งˆ์„ ๋†’์ด๊ณ , ์˜ค๋ฅ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ ๋ฆฌ๋ทฐ ์ ˆ์ฐจ

  1. ๋ฆฌ๋ทฐ ์š”์ฒญ : PR์„ ์ƒ์„ฑํ•˜๋ฉด์„œ ๊ด€๋ฆฌ์ž๋‚˜ ๋ฆฌ๋ทฐ์–ด๋ฅผ ์ง€์ •ํ•˜์—ฌ ๋ฆฌ๋ทฐ๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ์ฝ”๋“œ ๊ฒ€ํ†  ๋ฐ ํ”ผ๋“œ๋ฐฑ : ๋ฆฌ๋ทฐ์–ด๊ฐ€ ์ฝ”๋“œ์˜ ํ’ˆ์งˆ, ์„ฑ๋Šฅ, ์œ ์ง€ ๋ณด์ˆ˜์„ฑ ๋“ฑ์„ ํ‰๊ฐ€ํ•˜๊ณ  ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  3. ์ˆ˜์ • ํ›„ ์žฌ๊ฒ€ํ†  : ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ˜์˜ํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ , ๋‹ค์‹œ ๊ฒ€ํ† ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  4. ๋ณ‘ํ•ฉ : ์ตœ์ข…์ ์œผ๋กœ ์Šน์ธ๋œ PR์€ ๋ฉ”์ธ ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค.

 


 

Fork์™€ Pull Request์˜ ๊ฐœ๋… ๋ฐ ์‚ฌ์šฉ ๋ฐฉ๋ฒ• ๋น„๊ต ํ‘œ

๊ธฐ๋Šฅ ์„ค๋ช… ์ฃผ์š” ๋ชฉ์ 
Fork ์›๋ณธ ์ €์žฅ์†Œ์˜ ๋ณต์‚ฌ๋ณธ์„ ์ƒ์„ฑ ๋…๋ฆฝ์ ์œผ๋กœ ์ˆ˜์ • ๊ฐ€๋Šฅ
Pull Request ์›๋ณธ ์ €์žฅ์†Œ๋กœ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ฐ˜์˜ ์š”์ฒญ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฐ ๋ณ‘ํ•ฉ ์ ˆ์ฐจ๋ฅผ ํ†ตํ•ด ํ˜‘์—… ๊ฐ€๋Šฅ
์ฝ”๋“œ ๋ฆฌ๋ทฐ Pull Request์— ๋Œ€ํ•ด ํ”ผ๋“œ๋ฐฑ ์ œ๊ณต ์ฝ”๋“œ ํ’ˆ์งˆ ํ–ฅ์ƒ, ์˜ค๋ฅ˜ ๋ฐฉ์ง€




 

์˜คํ”ˆ ์†Œ์Šค ๊ธฐ์—ฌ ํ˜„ํ™ฉ๊ณผ ํŠธ๋ Œ๋“œ ๐ŸŒ

์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋“ค์€ ๋งค๋…„ ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. GitHub ํ†ต๊ณ„์— ๋”ฐ๋ฅด๋ฉด, 2024๋…„ ํ˜„์žฌ GitHub์—๋Š” 6์ฒœ๋งŒ ๊ฐœ ์ด์ƒ์˜ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ ๊ฐ€ ์šด์˜ ์ค‘์ด๋ฉฐ, ์ „ ์„ธ๊ณ„์˜ ์ˆ˜๋ฐฑ๋งŒ ๋ช…์˜ ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ธฐ์—ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ Pull Request๋ฅผ ํ†ตํ•œ ๊ธฐ์—ฌ๋Š” ํ˜‘์—…์˜ ํ•ต์‹ฌ ์š”์†Œ๋กœ ์ž๋ฆฌ ์žก๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 


 

FAQ ๐Ÿค”

Q1. Fork์™€ Clone์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?
A1. Fork๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ €์žฅ์†Œ๋ฅผ ์ž์‹ ์˜ GitHub ๊ณ„์ •์— ๋ณต์‚ฌํ•˜๋Š” ๊ณผ์ •์ด๋ฉฐ, Clone์€ ์ž์‹ ์˜ ๋กœ์ปฌ ์ปดํ“จํ„ฐ์— ๋ณต์‚ฌํ•˜์—ฌ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Q2. Pull Request๋ฅผ ํ†ตํ•ด ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
A2. Pull Request๋Š” ์ˆ˜์ •ํ•œ ์ฝ”๋“œ๋ฅผ ์›๋ณธ ์ €์žฅ์†Œ์— ๋ฐ˜์˜ํ•ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ์ฝ”๋“œ ๋ฆฌ๋ทฐ์™€ ํ˜‘์—… ์ ˆ์ฐจ๋ฅผ ๊ฑฐ์ณ ๋ณ‘ํ•ฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Q3. ์ฝ”๋“œ ๋ฆฌ๋ทฐ๊ฐ€ ๊ผญ ํ•„์š”ํ•œ๊ฐ€์š”?
A3. ๋„ค, ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋Š” ์ฝ”๋“œ์˜ ํ’ˆ์งˆ๊ณผ ์•ˆ์ •์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํŒ€์›๋“ค๊ณผ์˜ ํ˜‘์—…์—์„œ๋„ ํ•„์ˆ˜์ ์ธ ์ ˆ์ฐจ์ž…๋‹ˆ๋‹ค.

Q4. Forkํ•œ ์ €์žฅ์†Œ๋ฅผ ์›๋ณธ๊ณผ ๋™๊ธฐํ™”ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?
A4. ์›๋ณธ ์ €์žฅ์†Œ์˜ ์ตœ์‹  ์ฝ”๋“œ๋ฅผ ์ž์‹ ์˜ Fork ์ €์žฅ์†Œ์— ๋ฐ˜์˜ํ•˜๋ ค๋ฉด git fetch upstream ๋ฐ git merge ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Q5. PR์ด ๊ฑฐ์ ˆ๋˜๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜์š”?
A5. ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ˜์˜ํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•œ ํ›„, PR์„ ๋‹ค์‹œ ์š”์ฒญํ•˜๊ฑฐ๋‚˜, ์ƒˆ๋กœ์šด PR์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Fork์™€ Pull Request๋ฅผ ์ž˜ ํ™œ์šฉํ•˜๋ฉด ํ˜‘์—…๊ณผ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ ๊ธฐ์—ฌ๊ฐ€ ํ›จ์”ฌ ๋” ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค. ์ด ๋‘ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ์ตํžˆ๊ณ  ์‚ฌ์šฉํ•˜์—ฌ, ์›ํ™œํ•œ ํŒ€ ํ”„๋กœ์ ํŠธ์™€ ์˜คํ”ˆ ์†Œ์Šค ๊ธฐ์—ฌ๋ฅผ ๊ฒฝํ—˜ํ•ด๋ณด์„ธ์š”!

๋Œ“๊ธ€