๐ŸŒฑ fork : git ๊ณต๋™์ž‘์—…์„ ํ•ด๋ณด์ž

์˜ค๋‹คํ˜œยท2021๋…„ 8์›” 27์ผ
0

git

๋ชฉ๋ก ๋ณด๊ธฐ
1/1
post-thumbnail

1. ๊ณต๋ถ€ํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋””๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๊ณ  ํ•จ.
  • github ์—์„œ repository ๋ฅผ ํŒŒ์„œ ๊ฐ์ž์˜ branch์— ์˜ฌ๋ฆฌ๊ณ  ๊ฒ€์‚ฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜๊ณ ์ž ํ–ˆ์œผ๋‚˜, main branch ์— merge ํ•˜์ง€ ์•Š์ง€ ์•Š์œผ๋ฉด ์ž”๋””๊ฐ€ ์ฑ„์›Œ์ง€์ง€ ์•Š๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ (์ž”๋”” ๋•Œ๋ฌธ์— ๊ณต๋ถ€ํ•˜๋Š”๋ฐ^^;)
  • fork ๋ผ๋Š” ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ๊ฐ์ž์˜ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์˜ฌ๋ฆฌ๊ณ  pull request ๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•จ.

2. fork

๐ŸŒป fork ๋ž€ ?

fork ๋ž€ github repository ๋ฅผ ํ†ต์งธ๋กœ ๋ณต์‚ฌํ•ด์„œ '๋‚˜'์˜ repository ๋กœ ๋งŒ๋“œ๋Š” ํ–‰์œ„ ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

๐ŸŒป fork ์˜ ์žฅ์ 

ํ•˜๋‚˜์˜ ๋ธŒ๋žœ์น˜(main/master) ์—์„œ ์ž‘์—… ๊ฐ€๋Šฅ

๊ฐ€์žฅ ํฐ ์žฅ์ ์ด์ž ํ•ด๋‹น ๊ธฐ๋Šฅ์ด ์กด์žฌํ•˜๋Š” ์ด์œ ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.
๊ณต๋™์œผ๋กœ ์ž‘์—…ํ•˜๋‹ค๋ณด๋ฉด ๋ธŒ๋žœ์น˜๋ฅผ ๋ณ‘ํ•ฉํ•œ ํ›„์— checkout ์„ ๋ฏธ์ฒ˜ ํ•˜์ง€ ๋ชปํ•˜๊ณ  develop ์ด๋‚˜ main์—์„œ ์ž‘์—…ํ•ด๋ฒ„๋ ค์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ ์ˆœ์„œ๊ฐ€ ๊ผฌ์ด๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ๋‹ค. fork ๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ๊ณต๋™ repo๋ž‘์€ ๋ณ„๊ฐœ์˜ ๋ณต์‚ฌ๋ณธ์ด ๋งŒ๋“ค์–ด์ง€๊ณ  ๋ณต์‚ฌ๋ณธ์—์„œ ์ž‘์—…์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์›๋ณธ๊ณผ ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘์—…ํ•ด๋„ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋”ฐ๋กœ branch ๋ฅผ ํŒŒ์ง€ ์•Š๊ณ  main(master)์—์„œ ์ž‘์—…์„ ํ•ด๋„ ๋œ๋‹ค!
-> ์ž”๋””๊ฐ€ ์ฑ„์›Œ์ง„๋‹ค!! ๋งŒ์„ธ ๐Ÿ˜†

๐ŸŒป original repository ์— ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋ฐ˜์˜ํ•˜๊ธฐ

fork ํ•œ ๊ฐœ์ธ repository์—์„œ๋งŒ ์ž‘์—…ํ•˜๋ฉด ๊ฒฐ๊ตญ ๋ณต์‚ฌ๋ณธ์—์„œ๋งŒ ๋ฐ”๋€Œ๊ธฐ ๋•Œ๋ฌธ์— ๊ณต๋™์ž‘์—…์„ ํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค. original repository ์— ์šฐ๋ฆฌ๊ฐ€ ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ ๋™๊ธฐํ™” ์‹œํ‚ค๋Š” ์ž‘์—…์ด ํ•„์ˆ˜์ ์ด๋‹ค.

์ด ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋…์ด ๋ฐ”๋กœ pull request ๋‹ค. original repository ์— ๋‚ด๊ฐ€ ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ pull ํ•ด๋‹ฌ๋ผ๊ณ (๋ฐ›์•„๋‹ฌ๋ผ๊ณ ) ์š”์ฒญํ•˜๋Š” ์ž‘์—…์„ ์˜๋ฏธํ•œ๋‹ค. ๋ฐ”๋กœ merge ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ pull request๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž‘์—… ๋‚ด์šฉ์ด ํ•จ๋ถ€๋กœ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค. pull request ๋ฅผ original repository ์ชฝ์—์„œ ์Šน์ธํ•˜๋ฉด ๊ทธ์ œ์„œ์•ผ fork repo ์—์„œ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์ด original repository ์— ๋ฐ˜์˜๋œ๋‹ค.

๐ŸŒป original repository ์™€ ๋™๊ธฐํ™” ํ•˜๊ธฐ

remote ์— upstream ์ถ”๊ฐ€ํ•˜๊ธฐ

fork repository ์ž…์žฅ์—์„œ ๋ฐ”๋ผ๋ณธ original repository ๋Š” upstream ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. remote ๋Š” origin ์ฆ‰, fork ๋œ repository ๋งŒ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ์ƒํƒœ์ธ๋ฐ original repository์˜ ์ฝ”๋“œ๋ฅผ pull ๋ฐ›๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋„ remote ์— ์ถ”๊ฐ€ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

original repositpory์˜ remote ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ์˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

$ git remote add upstream "original repository ์ฃผ์†Œ" 

์ž˜ ๋“ฑ๋ก๋๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•œ๋‹ค.

$ git remote -v

origin๊ณผ upstream ๋‘ ๊ฐœ๊ฐ€ ๋œฌ๋‹ค๋ฉด ์ž˜ ๋œ ๊ฒƒ์ด๋‹ค.

original repository ๋ณ€๊ฒฝ์‚ฌํ•ญ pull ๋ฐ›๊ธฐ

์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ original repository์™€ fork repository ๋ฅผ ๋™๊ธฐํ™”์‹œํ‚จ๋‹ค.

git pull upstream develop

๋‚˜๋Š” develop branch ์™€ ๋™๊ธฐํ™”๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ upstream develop ์ด๋ผ๊ณ  ๋ช…๋ น์–ด๋ฅผ ์ณค์ง€๋งŒ, ๋งŒ์•ฝ ๋™๊ธฐํ™” ํ•˜๊ณ  ์‹ถ์€ ๋ธŒ๋žœ์น˜๊ฐ€ main ์ด๋‚˜ master ํ˜น์€ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋ผ๋ฉด develop ๋Œ€์‹ ์— ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋ช…์„ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

3. ๋Š๋‚€์ 

github ๋ฅผ ์“ฐ๊ธฐ ์‹œ์ž‘ํ•œ ์ง€ ์–ด์–ธ 1๋…„์ด ์ง€๋‚ฌ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ํŒ€ํ”„๋กœ์ ํŠธ ๋“ฑ์œผ๋กœ ๊ณต๋™์ž‘์—…์„ ์—ฌ๋Ÿฌ ๋ฒˆ ํ–ˆ์—ˆ๋Š”๋ฐ ์ด์ œ์•ผ fork ๋ฅผ ์‚ฌ์šฉํ•  ์ƒ๊ฐ์„ ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ถ€๋„๋Ÿฌ์› ๋‹ค. ์ฒ˜์Œ์—” ๊ฐ์ž ๋ธŒ๋žœ์น˜๋ฅผ ํŒŒ๊ณ  main์— ๊ฐ์ž merge ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ˜‘์—…์„ ์ง„ํ–‰ํ–ˆ์—ˆ๋‹ค. ๋ชจ๋‘ main์—์„œ ์ž‘์—…ํ•˜๋Š” ๊ฑฐ ๋ณด๋‹ค ๋œ ํ•˜๊ฒ ์ง€๋งŒ ์ถฉ๋Œ๋‚˜๊ณ  ์ด๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๊ณผ์ •์—์„œ ์‹œ๊ฐ„์„ ๋งŽ์ด ๋บ๊ฒผ์—ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋ฐ”๊พผ ๋ฐฉ๋ฒ•์ด ์ง€๊ธˆ ํ•˜๊ณ  ์žˆ๋Š” branch to main branch merge ์˜€๋‹ค. ๊ฐ์ž ๋ธŒ๋žœ์น˜๋ฅผ ํŒŒ๋Š” ๊ฑด ๋˜‘๊ฐ™์ง€๋งŒ main์—์„œ ๋ฐ”๋กœ merge ๋ฅผ ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ pull request ๋ฅผ ๋‚ ๋ ค์„œ github ์— ๊ธฐ๋ก๋„ ๋‚จ๊ธฐ๊ณ  ์ถฉ๋Œ์ด ๋‚ฌ์„ ๊ฒฝ์šฐ์— ๋‹ค์‹œ ์ž‘์—…ํ•˜๋˜ ๋ธŒ๋žœ์น˜์—์„œ ๋จผ์ € ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•œ ๋‹ค์Œ์— merge ๋ฅผ ํ•  ์ˆ˜ ์žˆ์–ด์„œ develop ๋ธŒ๋žœ์น˜๋ฅผ ์ข€ ๋” ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋„๋ก ํ–ˆ๋‹ค.

์œ„์˜ ๋ฐฉ๋ฒ•์€ pull request ํ›„์— ํ•ด๋‹น branch ์‚ญ์ œ์™€ ๋‹ค์‹œ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ๊ฒƒ, ์ดํ›„์— develop์—์„œ ๊ฐœ๋ฐœ์„ ํ•˜๋Š” ์‹ค์ˆ˜๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ ๋“ฑ ์—ฌ๋Ÿฌ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ๋˜ํ•œ github ์ž”๋””๋ฅผ ๊น” ์ˆ˜ ์—†์–ด์„œ ๋„ˆ๋ฌด ์†์ƒํ–ˆ๋‹ค. ๊ทผ๋ฐ ์ด์ œ fork ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•ด๋‹น ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ๊ธฐ์˜๋‹ค.

4. Reference

profile
ํ”„๋ก ํŠธ์—”๋“œ์— ๋ฐฑ์—”๋“œ ํ•œ ์Šคํ‘ผ ๐Ÿฅ„

0๊ฐœ์˜ ๋Œ“๊ธ€