fork
๋ผ๋ ๋ฐฉ๋ฒ์ ํตํด ๊ฐ์์ ๋ ํฌ์งํ ๋ฆฌ์ ์ฌ๋ฆฌ๊ณ pull request
๋ฅผ ํตํด ๊ด๋ฆฌํด๋ณด๊ณ ์ ํจ.fork ๋ github repository ๋ฅผ ํต์งธ๋ก ๋ณต์ฌํด์ '๋'์ repository ๋ก ๋ง๋๋ ํ์ ๋ฅผ ์๋ฏธํ๋ค.
ํ๋์ ๋ธ๋์น(main/master)
์์ ์์
๊ฐ๋ฅ๊ฐ์ฅ ํฐ ์ฅ์ ์ด์ ํด๋น ๊ธฐ๋ฅ์ด ์กด์ฌํ๋ ์ด์ ๋ผ๊ณ ์๊ฐํ๋ค.
๊ณต๋์ผ๋ก ์์
ํ๋ค๋ณด๋ฉด ๋ธ๋์น๋ฅผ ๋ณํฉํ ํ์ checkout ์ ๋ฏธ์ฒ ํ์ง ๋ชปํ๊ณ develop ์ด๋ main์์ ์์
ํด๋ฒ๋ ค์ ๋ค๋ฅธ ์ฌ๋๊ณผ ์์๊ฐ ๊ผฌ์ด๋ ๊ฒฝ์ฐ๊ฐ ์ข
์ข
์๋ค. fork ๋ฅผ ํ๊ฒ ๋๋ฉด ๊ณต๋ repo๋์ ๋ณ๊ฐ์ ๋ณต์ฌ๋ณธ
์ด ๋ง๋ค์ด์ง๊ณ ๋ณต์ฌ๋ณธ์์ ์์
์ ํ๊ธฐ ๋๋ฌธ์ ์๋ณธ๊ณผ ๋
๋ฆฝ์ ์ผ๋ก ์์
ํด๋ ๋๋ค. ๋ฐ๋ผ์ ๋ฐ๋ก branch ๋ฅผ ํ์ง ์๊ณ main(master)์์ ์์
์ ํด๋ ๋๋ค!
-> ์๋๊ฐ ์ฑ์์ง๋ค!! ๋ง์ธ ๐
fork ํ ๊ฐ์ธ repository์์๋ง ์์ ํ๋ฉด ๊ฒฐ๊ตญ ๋ณต์ฌ๋ณธ์์๋ง ๋ฐ๋๊ธฐ ๋๋ฌธ์ ๊ณต๋์์ ์ ํ ์๊ฐ ์๋ค. original repository ์ ์ฐ๋ฆฌ๊ฐ ์์ ํ ๋ด์ฉ์ ๋๊ธฐํ ์ํค๋ ์์ ์ด ํ์์ ์ด๋ค.
์ด ๋ ์ฌ์ฉํ๋ ๊ฐ๋
์ด ๋ฐ๋ก pull request
๋ค. original repository ์ ๋ด๊ฐ ์์
ํ ๋ด์ฉ์ pull ํด๋ฌ๋ผ๊ณ (๋ฐ์๋ฌ๋ผ๊ณ ) ์์ฒญํ๋ ์์
์ ์๋ฏธํ๋ค. ๋ฐ๋ก merge ํ๋ ๊ฒ ์๋๋ผ pull request๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ์์
๋ด์ฉ์ด ํจ๋ถ๋ก ๋ณ๊ฒฝ๋์ง ์๋๋ค. pull request ๋ฅผ original repository ์ชฝ์์ ์น์ธํ๋ฉด ๊ทธ์ ์์ผ fork repo ์์ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ด original repository ์ ๋ฐ์๋๋ค.
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์ fork repository ๋ฅผ ๋๊ธฐํ์ํจ๋ค.
git pull upstream develop
๋๋ develop branch ์ ๋๊ธฐํ๋ฅผ ํ๊ธฐ ์ํด์ upstream develop ์ด๋ผ๊ณ ๋ช ๋ น์ด๋ฅผ ์ณค์ง๋ง, ๋ง์ฝ ๋๊ธฐํ ํ๊ณ ์ถ์ ๋ธ๋์น๊ฐ main ์ด๋ master ํน์ ๋ค๋ฅธ ๋ธ๋์น๋ผ๋ฉด develop ๋์ ์ ํด๋น ๋ธ๋์น๋ช ์ ์ ๋ ฅํ๋ฉด ๋๋ค.
github ๋ฅผ ์ฐ๊ธฐ ์์ํ ์ง ์ด์ธ 1๋ ์ด ์ง๋ฌ๋ค. ์ง๊ธ๊น์ง ํํ๋ก์ ํธ ๋ฑ์ผ๋ก ๊ณต๋์์ ์ ์ฌ๋ฌ ๋ฒ ํ์๋๋ฐ ์ด์ ์ผ fork ๋ฅผ ์ฌ์ฉํ ์๊ฐ์ ํ๋ค๋ ๊ฒ์ด ๋ถ๋๋ฌ์ ๋ค. ์ฒ์์ ๊ฐ์ ๋ธ๋์น๋ฅผ ํ๊ณ main์ ๊ฐ์ merge ์ํค๋ ๋ฐฉ๋ฒ์ผ๋ก ํ์ ์ ์งํํ์๋ค. ๋ชจ๋ main์์ ์์ ํ๋ ๊ฑฐ ๋ณด๋ค ๋ ํ๊ฒ ์ง๋ง ์ถฉ๋๋๊ณ ์ด๋ฅผ ๋ณต๊ตฌํ๋ ๊ณผ์ ์์ ์๊ฐ์ ๋ง์ด ๋บ๊ฒผ์๋ค.
๊ทธ๋์ ๋ฐ๊พผ ๋ฐฉ๋ฒ์ด ์ง๊ธ ํ๊ณ ์๋ branch to main branch merge ์๋ค. ๊ฐ์ ๋ธ๋์น๋ฅผ ํ๋ ๊ฑด ๋๊ฐ์ง๋ง main์์ ๋ฐ๋ก merge ๋ฅผ ํ๋ ๊ฒ ์๋๋ผ pull request ๋ฅผ ๋ ๋ ค์ github ์ ๊ธฐ๋ก๋ ๋จ๊ธฐ๊ณ ์ถฉ๋์ด ๋ฌ์ ๊ฒฝ์ฐ์ ๋ค์ ์์ ํ๋ ๋ธ๋์น์์ ๋จผ์ ์ถฉ๋์ ํด๊ฒฐํ ๋ค์์ merge ๋ฅผ ํ ์ ์์ด์ develop ๋ธ๋์น๋ฅผ ์ข ๋ ์์ ํ๊ฒ ์ฌ์ฉํ๋๋ก ํ๋ค.
์์ ๋ฐฉ๋ฒ์ pull request ํ์ ํด๋น branch ์ญ์ ์ ๋ค์ ๋ง๋ค์ด์ผ ํ๋ ๊ฒ, ์ดํ์ develop์์ ๊ฐ๋ฐ์ ํ๋ ์ค์๊ฐ ์์ฃผ ๋ฐ์ํ๋ ๊ฒ ๋ฑ ์ฌ๋ฌ ๋ฌธ์ ๊ฐ ์์๋ค. ๋ํ github ์๋๋ฅผ ๊น ์ ์์ด์ ๋๋ฌด ์์ํ๋ค. ๊ทผ๋ฐ ์ด์ fork ๋ฅผ ์ฌ์ฉํด์ ํด๋น ๋ฌธ์ ๋ค์ ํด๊ฒฐํ ์ ์๊ฒ ๋์ด ๊ธฐ์๋ค.