์คํ ์์ค์ ๊ธฐ์ฌํ๊ธฐ ์ํด์๋ ์คํ ์์ค ํ๋ก์ ํธ์ ์ฝ๋๋ฅผ ์์ ํด์ผํ๋๋ฐ, ๋ด๊ฐ ์ง์ ์คํ ์์ค ์ฝ๋์ ์์ ์ ํ ์ ์๋ค.
๊ทธ๋์ ์คํ ์์ค ํ๋ก์ ํธ๋ฅผ ๋ณต์ฌํด์ ์์ ์ ํ๊ณ ์คํ์์ค ํ๋ก์ ํธ์ ์์ ์์๊ฒ ๊ฒ์ฌ๋ฅผ ๋ฐ์์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฒ์ฌ๋ฅผ ๋ค ๋ฐ์ผ๋ฉด ์คํ์์ค ํ๋ก์ ํธ์ ์์ ์๊ฐ ํด๋น ์ฝ๋๋ฅผ ์์ ์ ์คํ์์ค ์ฝ๋์ ์ ์ฉ์ํจ๋ค.
๊ฒ์ฌ๋ฅผ ๋ฐ๋ ๊ณผ์ ์ ๋ค์์ ๋ฐฐ์๋ณผ Pull Request๋ผ๊ณ ํ๊ณ , ์คํ ์์ค ํ๋ก์ ํธ๋ฅผ ๋ณต์ฌํ๋ ์์ ์ ์ค๋ ๋ฐฐ์๋ณผ fork ๋ผ๊ณ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ๋๊ตฐ๊ฐ๊ฐ Pull Requestํ ์คํ ์์ค ํ๋ก์ ํธ ์ฝ๋๋ฅผ ๋ด ์คํ ์์ค ํ๋ก์ ํธ ์ ์ฅ์๋ก ์ ์ฉํ๊ธฐ ์ํ ๊ณผ์ ์ upstream์ด๋ผ ํ๋ค.
์ฉ์ด ์ ๋ฆฌ
- ๋ฉ์ธ ์ ์ฅ์ : ์คํ์์ค ํ๋ก์ ํธ์ github์ main repo๋ก ๋ด๊ฐ ๊ธฐ์ฌํ๊ณ ์ถ์ ํ๋ก์ ํธ์ ์ ์ฅ์. ๋ํํ ์ฐ๊ธฐ๊ถํ ์์. ๊ทธ๋์ ์ด๋ฅผ upstream์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ๋์ ์ ์ฅ์ : github์์ ๋ด ๊ณ์ ์ ์๋ repo๋ก ๋ฉ์ธ ์ ์ฅ์๋ก ๋ถํฐ forkํ ์ ์ฅ์ origin์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ๋ก์ปฌ ์ ์ฅ์ : ๋ด๊ฐ ์ปดํจํฐ์ ์์ฑํ git repository file
- ์์ ๊ณต๊ฐ : ์ค์ ์์ค์ฝ๋๊ฐ ์๋ workspace๋ฅผ ๋ถ๋ฅธ๋ค.
์์
- ์คํ์์ค ํ๋ก์ ํธ ๊ฐ์ ธ์ค๊ธฐ
- ๋ก์ปฌ ์ ์ฅ์ ์ธํ
- ๋ฉ์ธ ์ ์ฅ์์ ๋ด ์ ์ฅ์ ์ฑํฌํ๊ธฐ
์คํ์์ค ํ๋ก์ ํธ ๊ฐ์ ธ์ค๊ธฐ
์คํ์์ค ํ๋ก์ ํธ๊ฐ ์๋ ๋ฉ์ธ ์ ์ฅ์๋ฅผ ๋ด ์ ์ฅ์๋ก fork ํด์ผํ๋ค.
๊ทธ๋ผ ๋ฉ์ธ ์ ์ฅ์์์ ๋ชจ๋ ๊ฒ์ ๊ฐ์ ธ์ ๋ด ์๊ฒฉ ์ ์ฅ์์ ์ ์ฅ๋๊ณ ๋ด๊ฐ ์์ ํ ์ ์๋ ํ๊ฒฝ์ด ๋๋ค.
๋ก์ปฌ ์ ์ฅ์ ์ธํ ํ๊ธฐ
๋ก์ปฌ ์ ์ฅ์๋ฅผ ์ธํ ํ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋ค.
- ์์ ๊ณต๊ฐ ๋ง๋ค๊ธฐ
- origin ์ค์
- upstream ์ค์
์์ ๊ณต๊ฐ ๋ง๋ค๊ธฐ
์์
๊ณต๊ฐ์ ๋ง๋ค๊ธฐ ์ํด git clone
์ ํด๋ ๋ฌด๋ฐฉํ์ง๋ง ์ด๋ฒ์ ์ง์ ํด๋๋ฅผ ๊น ํด๋๋ก ์ด๊ธฐํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์์๋ณผ ๊ฒ์ด๋ค.
// ๋ด ์์
๊ณต๊ฐ ํด๋ ๋ง๋ค๊ธฐ
$ mkdir my-workspace
// ํด๋น ๋๋ ํ ๋ฆฌ๋ก ์ด๋
$ cd my-workspace
// ๊น ๋ ํฌ์งํ ๋ฆฌ๋ก ์ด๊ธฐํ
$ git init
origin ์ค์
๋ด๊ฐ forkํ ๋์ ์ ์ฅ์์ ์ฐ๊ฒฐ์์ผ Pull Request๋ฅผ ๋ณด๋ผ ์ค๋น๋ฅผ ํ๋ค.
$ git remote add origin forkํ-๋ด-์๊ฒฉ-์ ์ฅ์-url.git
upstream ์ค์
๋ฉ์ธ ์ ์ฅ์์ ์ฝ๋๋ฅผ ์ฑํฌํ๊ธฐ ์ํด upstream ์ค์ ์ ํ๋ค.
$ git remote add upstream ๋ฉ์ธ-์ ์ฅ์-url.git
๋ฉ์ธ ์ ์ฅ์์ ๋ด ์ ์ฅ์ ์ฑํฌํ๊ธฐ
์คํ์์ค ํ๋ก์ ํธ๋ ๋ง ๊ทธ๋๋ก ๋๊ตฌ์๊ฒ๋ ์คํ๋ ์์ค๋ฅผ ์ ์ง๋ณด์ ํน์ ์๋น์คํ๋ค.
์คํ์์ค์ ํน์ฑ์ ๋ ํผ์๋ง contribution์ ํ๋๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ๋ฉ์ธ ์ ์ฅ์์ syncํด์ผ ํ๋ค.
๋๊ตฐ๊ฐ๊ฐ ์์ ํ ์ฝ๋๊ฐ ๋ด๊ฐ ์์ ํ๊ณ ์๋ ์๊ฒฉ repo์ ํจ๊ป ๊ฐ์ผํ๋ค.
๊ทธ ๊ณผ์ ์ ๋ฐ๋ก fetch ๊ณผ์ ์ด๋ผ๊ณ ํ๋๋ฐ, ์์๋ณด์.
$ git fetch upstream
์ด ๋ช ๋ น์ด๋ฅผ ์น๋ฉด ์๋ณธ ์์ค์ฝ๋์ ๋ด์ฉ์ ๋ก์ปฌ์ ๋ด๋ ค๋ฐ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ด๋ ค๋ฐ์ ์์ค ์ฝ๋๋ฅผ ์ค์ ๋ด repository์ merge ์ํจ๋ค.
$ git merge upstream/master
๊ทธ๋ฆฌ๊ณ ๋ด ์๊ฒฉ ์ ์ฅ์๋ก push ํด์ค๋ค.
$ git push origin master
๋๊ธ