[GitHub] Git Fork

๊น€์ •๋ฏผยท2022๋…„ 9์›” 5์ผ
1
post-thumbnail

Git 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 ๋Œ€์‹ ์— ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋ช…์„ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

Reference

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

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