-
[Github] Github์ผ๋ก ํ์ ํ๊ธฐ - Organization(Forking Workflow)๐ปProgramming/Github 2023. 9. 12. 18:09
๐ Git๊ณผ Github์ ์ฐจ์ด
Git: ๊ฐ์ธ ์ปดํจํฐ์์ ๋์๊ฐ๋ Version Control System - ์ธํฐ๋ท ์ฐ๊ฒฐ ์์ด๋ ์ฌ์ฉ ๊ฐ๋ฅ
Github: ์๋ฒ์ ์ฌ๋ผ๊ฐ Git - ์ธํฐ๋ท ์ฐ๊ฒฐํด์ผ๋ง ์ฌ์ฉ ๊ฐ๋ฅ
๐ ์ ์ฅ์ ๋ถ๋ฅ
์ค์ ์๊ฒฉ(remote) ์ ์ฅ์: ์ฌ๋ฌ ๋ช ์ด ํ๋ก์ ํธ๋ฅผ ๊ด๋ฆฌํ๋๋ฐ ์ฌ์ฉ๋๋ ๊ทธ๋ฃน ๊ณ์ ์ ์ค๋ฆฝ๋ ์๊ฒฉ ์ ์ฅ์
์์ ์ ์๊ฒฉ(remote) ์ ์ฅ์: Github ์ ์ฉ ์๋ฒ์์ ๊ด๋ฆฌ๋๋ ์๊ฒฉ ์ ์ฅ์.
๋ก์ปฌ(local) ์ ์ฅ์: ๋ด pc์ ์ ์ฅ๋๋ ์ ์ฅ์.
๐ 1. Fork: ์ค์ ์๊ฒฉ ์ ์ฅ์ -> ๋ด ์๊ฒฉ ์ ์ฅ์
Organizatioin์์ Repository๋ฅผ ์์ฑํ๋ฉด ์ค์ ์๊ฒฉ ์ ์ฅ์๊ฐ ์์ฑ๋๋ค. Fork๋ฅผ ํตํด ์ค์ ์๊ฒฉ ์ ์ฅ์์ ๋ฆฌํฌ๋ฅผ ๋ด ์๊ฒฉ ์ ์ฅ์์ ์ฎ๊ธฐ๋ ๊ฒ์ด๋ค. (Organization์ด ์๋๋ผ ๊ฐ์ธ์ด ์์ฑํ ๋ฆฌํฌ์งํ ๋ฆฌ๋ ๋ด ์๊ฒฉ ์ ์ฅ์๋ก Fork ๊ฐ๋ฅํ๋ค.)
์ค์ ์๊ฒฉ ์ ์ฅ์์ ๋ฆฌํฌ์ ๋ค์ด๊ฐ Fork๋ฅผ ํด๋ฆญํ๋ฉด
์ด๋ฐ ์ฐฝ์ด ๋จ๊ณ Create fork ๋ฒํผ์ ํด๋ฆญํ๋ฉด ๋ด ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ค์ ์๊ฒฉ ์ ์ฅ์์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ณต์ ํ ๊ฒ๊ณผ ๊ฐ์ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ์๋ก ์์ฑ๋๋ค.
*fork๋ฅผ ์ทจ์ํ๊ณ ์ถ๋ค๋ฉด ๋ด๊ฐ ํฌํฌํ ๋ฆฌํฌ๋ก ๋ค์ด๊ฐ ์ค์ ์์ delete๋ฅผ ๋๋ฅด๋ฉด ์ญ์ ๊ฐ๋ฅ.
๐ 2. clone: ๋ด ์๊ฒฉ ์ ์ฅ์ -> ๋ด ๋ก์ปฌ ์ ์ฅ์
๋ด ์๊ฒฉ ์ ์ฅ์๋ฅผ ๋ณต์ ํ์ฌ ๋ก์ปฌ ์ ์ฅ์๋ฅผ ๋ง๋๋ ๋ช ๋ น์ด.
git clone <๋ด remote repository URL>
*์ฃผ์: ํ์ผ์ ์์ฑํ๊ณ , ๊ทธ ํ์ผ์์ ํฐ๋ฏธ๋์ ์ด์ด ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ฃผ์ด์ผ ํ๋ค.
๐ 3. ๋๊ฐ์ ์๊ฒฉ ์ ์ฅ์๋ฅผ ์ฐ๊ฒฐ
git remote add upstream <์ค์ remote repository URL>
-> remote add: ๋ด Git ์ ์ฅ์์ ์๊ฒฉ ์ ์ฅ์(remote repository)๋ฅผ ์ถ๊ฐํ๊ฒ ๋ค.
-> upstream: ์๋ก ์ถ๊ฐํ๋ ์๊ฒฉ ์ ์ฅ์์ ๋ณ์นญ. ๋ด๊ฐ ์ ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์ด๋ฆ์ ์จ์ฃผ์ด๋ ๋จ. But, ๋ณดํต ์ค์ ์๊ฒฉ ์ ์ฅ์๋ ์ผ๋ฐ์ ์ผ๋ก upstream์ด๋ ๋ณ์นญ์ ๋ถ์. 2๋ฒ์ ๋ด ์๊ฒฉ ์ ์ฅ์๋ clone๊ณผ ๋์์ ๊ธฐ๋ณธ์ ์ผ๋ก origin ์ด๋ ์ด๋ฆ์ด ์๋์ผ๋ก ๋ง๋ค์ด์ง๋ค. ์ด๋ ๊ฒ ๋๊ฐ์ ์๊ฒฉ ์ ์ฅ์๋ฅผ ์ฐ๊ฒฐํด ์ฃผ์ด์ผ์ง๋ง ๋ก์ปฌ ์ ์ฅ์๋ฅผ ํ๋ก์ ํธ ์ค์ ์๊ฒฉ ์ ์ฅ์์ ๊ฐ์ ์ํ๋ก ์ ์งํ ์ ์๋ค.
*clone์ ํตํด ์์ฑ๋ ํ์ผ์์ ํฐ๋ฏธ๋์ ์ด์ด ์์ฑํด์ฃผ์ด์ผ ํ๋ค.
git remote -v
-> ๋ช ๋ น์ด๋ฅผ ํตํด ํ์ฌ ๋ด ๊น ์ ์ฅ์์ ์ค์ ๋ ์๊ฒฉ(remote) ์ ์ฅ์์ ๋ฆฌ์คํธ๋ฅผ ๋ณผ ์ ์๋ค.
git pull upstream <Branch Name>
-> upstream ์๊ฒฉ ์ ์ฅ์์ <Branch Name>์ ์์ ๋ง Pull ๋ฐ๋๋ค๋ ์๋ฏธ์ด๋ค.
git fetch upstream
-> upstream ์๊ฒฉ(remote) ์ ์ฅ์์ ๋ชจ๋ ๋ธ๋์น ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ผ๋ ๊ฒ์ ์๋ฏธํ๋ค.
๐ 4. ๋ก์ปฌ ์ ์ฅ์์์ ์๋ก์ด ๋ธ๋์น๋ฅผ ์์ฑ
๋ธ๋์น๋ฅผ ์์ฑํ๋ ์ด์ : ์ผ๋ฐ์ ์ผ๋ก๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋๋ง๋ค ๊ธฐ๋ฅ์ ์ด๋ฆ์ผ๋ก ํ์ฌ ์๋ก์ด ๋ธ๋์น๋ฅผ ์์ฑํ๋ค. ํ์ง๋ง, ํ๋ก์ ํธ ์ฐธ์ฌ์๋ณ๋ก ๋ธ๋์น๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ๋ ์๋ค.
git branch <๋ด๊ฐ ์ํ๋ branch ์ด๋ฆ>
-> ์๋ก์ด ๋ธ๋์น ์์ฑ. (์๋ก์ด ๋ธ๋์น๊ฐ ์์ฑ๋ ๋ ๋ด ์๊ฒฉ ์ ์ฅ์์ ์ฝ๋๊ฐ ๋ณต์ฌ๋๋ ๊ฒ์ด ์๋๋ผ ๋ด ๋ก์ปฌ ์ ์ฅ์์ ์ฝ๋๊ฐ ๊ทธ๋๋ก ๋ณต์ฌ๋์ด ์๋ก์ด ๋ธ๋์น๋ก ์ฎ๊ฒจ์ง๋ ๊ฒ์.)
git checkout <์ด๋ํ๊ณ ์ ํ๋ branch ์ด๋ฆ>
-> ~~์ด๋ฆ์ ๋ธ๋์น๋ก ์ด๋.
git checkout -b <branch name>
-> <branch name>์ด๋ ์ด๋ฆ์ ๋ธ๋์น๋ฅผ ์์ฑํ๋ ๋์์ ์ด ๋ธ๋์น๋ก ์ด๋.
๐ 5. ๋ก์ปฌ ์ ์ฅ์์ ์ปค๋ฐ์ ์์ ์ ์๊ฒฉ ์ ์ฅ์์ ํธ์
๋ฐ๋ก ์ค์ ์๊ฒฉ ์ ์ฅ์์ ์์ ์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ฝ๋๋ฅผ ํธ์ํ๋ค๋ฉด ๊ตณ์ด Organization๊ณผ Fork๋ฅผ ์ฌ์ฉํด ์๋ก์ด ๊ธฐ๋ฅ์ ๊ตฌํํ ์ฝ๋๋ค์ ๋ถ๋ฆฌํ๋ ์ด์ ๊ฐ ์ฌ๋ผ์ง๋ค. ์ค์ ์๊ฒฉ ์ ์ฅ์๊ฐ ์๋ ์์ ์ ์๊ฒฉ ์ ์ฅ์์ ํธ์ํ๋ค.
git add . // ๋ณ๊ฒฝ๋ ๋ชจ๋ ํ์ผ์ ์คํ ์ด์ง ์์ญ์ ์ถ๊ฐ ํ์ผ ์ด๋ฆ์ด๋ ๊ฒฝ๋ก๋ฅผ ์ ์ด์ ํน์ ํ์ผ๋ง ์คํ ์ด์ง ์์ญ์ ์ถ๊ฐํ๋ ๊ฒ๋ ๊ฐ๋ฅ. git commit -m "์ปค๋ฐ ๋ฉ์์ง"
* Git์๋ ์ธ๊ฐ์ง ์์ญ๊ณผ ์ธ๊ฐ์ง ์ํ๊ฐ ์กด์ฌ.
์์ญ
Untracked area: Git์ด ๊ด๋ฆฌํ๊ณ ์์ง ์์ ์์ญ(ํ์ผ)
Tracked area: Git์ ๊ด๋ฆฌ๋ฅผ ๋ฐ์ ์ ์๋ ์์ญ(ํ์ผ)
Staging area: Commit์ด ๊ฐ๋ฅํ ์์ญ(ํ์ผ)
์ํ
Unmodified: ๊ธฐ์กด์ ์ปค๋ฐ ํ๋ ํ์ผ์ ์์ ํ์ง ์์ ์ํ
Modified: ๊ธฐ์กด์ ์ปค๋ฐํ๋ ํ์ผ์ ์์ ํ ์ํ
Staged: Commit์ด ๊ฐ๋ฅํ ์ํ
=> git add ๋ช ๋ น์ด๋ tracked area์ modified๋ ์ํ์ ํ์ผ์ staging area๋ก ์ฎ๊ฒจ์ฃผ์ด staged์ํ๋ก ๋ณ๊ฒฝํด์ฃผ๋ ๋ช ๋ น์ด๋ผ๊ณ ๋ณด๋ฉด๋จ.
git push origin <branch name>
-> ์์ ํ ์ฝ๋๊ฐ ์๋ ์๊ฒฉ ์ ์ฅ์์ ๋ธ๋์น์ ํธ์
๐ 6. Pull Request
์ธํฐ๋ท์ ํตํด ๋ด๊ฐ Forkํ ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ๊ฐ์ admin์๊ฒ pull request๋ฅผ ๋ณด๋ธ๋ค. branch ์ ํ ๊ฐ๋ฅ.
(์๊ท๋ชจ ํ๋ก์ ํธ์์ ๋ชจ๋๊ฐ admin์ด ๋ ์ ์๋ค.)
๐ 7. ํ๋ก์ ํธ ๊ด๋ฆฌ์(admin)์ pull request์ ๋ณ๊ฒฝ ๋ด์ฉ์ ํ์ธํ๊ณ ์ค์ ์๊ฒฉ ์ ์ฅ์์ ๋ณํฉ(merge)ํ๋ค.
Github ํ์ด์ง์์ Pull request ๋ฒํผ์ ํด๋ฆญ ํ, File changed ํญ์์ ๋ณ๊ฒฝ ๋ด์ฉ์ ํ์ธํ์ฌ Conversation ํญ์ผ๋ก ์ด๋ํ์ฌ "Confirm merge"๋ฅผ ํ๋ฉด ์ค์ ์๊ฒฉ ์ฝ๋ ๋ฒ ์ด์ค์ ๋ณํฉ(merge)๋๋ค. ์ถฉ๋์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ์ ํ์๋ค๊ณผ ์๋ ผํ์ฌ ์ถฉ๋ ๋ด์ฉ์ ์์ ํ ๋ณํฉ.
๐ 8. ์ค์ ์๊ฒฉ ์ ์ฅ์์ ์์ ์ ๋ก์ปฌ ์ ์ฅ์๋ฅผ ๋๊ธฐํ ํ๊ธฐ ์ํด ๋ก์ปฌ ์ ์ฅ์์ branch๋ฅผ ๊ธฐ๋ณธ ๋ธ๋์น(์ต์ข ์ฝ๋๋ฅผ ๋ฃ๋ ๋ธ๋์น)๋ก ์ด๋(checkout) ํ pull
git pull upstream main
๐ 9. ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ธฐ ์ํด ๋ ๋ธ๋์น๋ฅผ ์์ฑ(๋ฐ๋ณต)
8๋ฒ์ ํตํด ์ค์ ์๊ฒฉ ์ ์ฅ์์ ๋๊ธฐํ๋ ๋ก์ปฌ ์ ์ฅ์์ main ๋ธ๋์น์์ ์๋ก์ด ๋ธ๋์น๋ฅผ ํ๋ ๋ ํ์ ์์ ์ ์์.
๐ References
https://gmlwjd9405.github.io/2017/10/28/how-to-collaborate-on-GitHub-2.html
'๐ปProgramming > Github' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ