Git ์ด๋?
๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์ํ [Software]
(ex : ์์์ ์ดฌ์ํ๋ ์นด๋ฉ๋ผ ์ดํ)
Github ๋?
git์ผ๋ก ์ ์ฅ๋ผ์ ์๊ฒฉ ์ ์ก๋ ํ์ผ๋ค์ด ์ ์ฅ๋๋ ๊ณต๊ฐ์ ์ ๊ณตํ๋ [Service]
(ex : ์ ํ๋ธ)
Working Directory : project๋ฅผ ์์ฑํด์ ์์ ํ๊ณ ์๋ ํ๋๋์คํฌ ์์ ์์ ๊ณต๊ฐ
Repository : commit์ด ์ ์ฅ๋๋ ๊ณณ (์ฌ์ง์ฒฉ)
Snapshot : ํ์ฌ working directory์ ๋ชจ์ต์ ์ฐฐ์นต ์ฌ์ง ์ฐ๋ฏ์ด ์ ์ฅ
Commit : snapshot์ผ๋ก ์ ์ฅ๋ ๋ด์ฉ์ ์ฌ์ง์ฒฉ์ ์ฌ์ง ์ ์ฅํ๋ฏ์ด repository์ ์ ์ฅ
Checkout : ์ฌ๋ฌ ์ข ๋ฅ์ checkout์ด ์๋๋ฐ, ๋ํ์ ์ธ๊ฑด repository์ ์๋ ํน์ commit์ ๋ด์ฉ์ working directory ๋ก ๊ฐ์ ธ์ค๋ ๊ฒ
Branch : ํน์ dommit์ Branch ์ด๋ฆ์ ์ง์ (ํด์๊ฐ)
โ commit์ ๊ฐ๋ฅดํค๋ ๋จ์ํ ์ด๋ฆํ, ๊ทธ๋๋ ์ด ์ ๋ณด๊ฐ ์์ผ๋ฉด ๋ถ๋ชจ id๋ฅผ ๋ฐ๋ผ๊ฐ์ ์ ์ฒด์ ์ธ ์งํ์ํฉ์ ์ ์ ์์
git์ ์ฌ์ฉํด์ ํ์ผ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํ ๋, ํ์ผ์ ๋ค์ 3๊ฐ์ ์ํ ์ค ํ๋์ ์ํ์ ์๊ฒ ๋๋ค
Committed
: ์์ ์ฌํญ๋ค์ด git์ ์ ์ฅ๋ ์ํ๋ฅผ committed ์ํ๋ผ๊ณ ํ๊ณ , ์ด๋ ๊ฒ git์ ์ ์ฅํ๋ ํ์๋ฅผ Commit
ํ๋ค๊ณ ๋งํ๋ค.
staging area์ ์ ์ฅ๋๋ ํ์ผ์ด local repository๋ก ์ด๋ํด์ ์ต์ข
ํ์ ๋ณธ(commit)์ด ๋๋ ๊ฒ!
Modified
: modified file์ ์ด๋ฆ ๊ทธ๋๋ก ์์ ๋ file ์ด์ง๋ง, ์์ง committed ๋์ง ์์ ์ํ์ file์ ์๋ฏธํ๋ค.
Staged
: staged file์ modified file์์ ํ๋จ๊ณ ๋ ๋์๊ฐ์ ๊ณง commit ๋ ๊ฑฐ๋ผ๊ณ mark๋ง ํด๋์ ์ํ์ file์ ์๋ฏธํ๋ค.
์ฆ, modified ์ committed ์ ์ค๊ฐ ์ํ์ ๋์ ๋๋!
modified file์ stagingํ๋ฉด index
๋ผ๋ ์ค๋น ์์ญ(staging area) ๊ณต๊ฐ์ ์ ์ฅ๋๋ค.
Staged
๊ฐ ํ์ํ ์ด์ ๋, commit ํ๊ธฐ ์ ์ ์ค๊ฐ ์ํ๋ฅผ ์ ์ฅํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.Commit
์ ํ๋ฉด, commit history์ ๋จ๊ธฐ๋ ํ๊ณ , ํน์ ์ถ๊ฐ ์์ ์ฌํญ์ด ์๊ธฐ๋ ํ๋ก์ ํธ ๋ฐฉํฅ์ด ๋ณ๊ฒฝ๋์ด์ commit ์ด์ ์ผ๋ก ๋ค์ ๋๋๋ ค์ผ ํ ๋ ๊ณผ์ ์ด ๊น๋ค๋ก์ด๋ฐ,Staged
๋ฅผ ์ด์ฉํ๋ฉด commit ์ ์ ์ค๊ฐ ์ํ๋ฅผ ์ ์ฅํ ์ ์๋๋ก ํด์ค๋ค.
์ฆ, commit์ ํด๋น ๊ฐ๋ฐ์ด ์์ ํ ์๋ฃ ๋์ ๋ ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์, ์์ง ์๋ฃ๋ ์๋์์ง๋ง ์ค๊ฐ ์ํ๋ฅผ ์ ์ฅํ ํ์๊ฐ ์์ ๋ staging์ ์ฌ์ฉ!!
working directory์์ ์์
ํ ํ์ผ์ repository์ commitํ๊ฒ ๋๋ฉด...
์ด๋ ๊ฒ master(๊ธฐ๋ณธ์ด ๋๋ branch)์ HEAD(ํ์ฌ branch,commit์ด ๋ฌด์์ธ์ง ์๋ ค์ฃผ๋ pointer)๊ฐ ์์ฑ๋๋ค!
working directory์ ์์ ์ฌํญ์ด ์๊ฒจ์ ์ด๋ฅผ ๋ค์ commit์ ํ๋ฉด, master์ ๊ฐ์ด ๋ฌ๋ผ์ง๋ค (HEAD๋ ๋์ผ)
Branch๋, ๋
๋ฆฝ์ ์ผ๋ก ์ด๋ค ์์
์ ์งํํ๊ธฐ ์ํ ๊ฐ๋
์ด๋ค.
ํ์์ ์ํด ๋ง๋ค์ด์ง๋ ๊ฐ๊ฐ์ ๋ธ๋์น๋ ๋ค๋ฅธ ๋ธ๋์น์ ์ํฅ์ ๋ฐ์ง ์๊ธฐ ๋๋ฌธ์, ์ฌ๋ฌ ์์
์ ๋์์ ์งํํ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ , ์์
(์ด๋ค ๊ธฐ๋ฅ ์ถ๊ฐ...ํน์ ์คํ์ผ ์์ ๋ฑ)์ด ๋๋ฌ๋ค๋ฉด, ๋ณํฉ(Merge)ํจ์ผ๋ก์จ, ์์
ํ ๋ด์ฉ์ ๋ค์ ์๋ก์ด ํ๋์ ๋ธ๋์น๋ก ๋ชจ์ ์ ์๋ค.
(๋ณดํต์ ๋ธ๋์น์์ ์์
ํ ๋ด์ฉ์ master์ mergeํ์ง๋ง, ํผ์ํ๋ค๋ฉด ๋ธ๋์น์ ๋ธ๋์น๋ผ๋ฆฌ๊ณ merge ํ ์ ์๋ค.)
์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ์ด๋ก์ master์์ ๊ธฐ๋ฅ๋ณ๋ก ์ถ๊ฐ๋ ๋ค์ํ ๋ธ๋์น๋ค์ด ๊ฐ์์ ๊ธฐ๋ฅ ๊ตฌํ์ด ๋๋ ํ์ ๋ค์ master์ merge๋์ด ๊ฒฐ๊ตญ, ํ๋์ master๋ง ๋จ๋๊ฑธ ๋ณผ ์ ์๋ค.
master์ mergeํ ๋ธ๋์น๋ ์ฌ์ฌ์ฉํ์ง ์๋๋ค!
(0) cdํด๋๊ฒฝ๋ก
: git ์ ์ฅ์๋ฅผ ๋ง๋ค ๊ฒฝ๋ก๋ก ์ด๋
(1 - 1) git init
์๋ก์ด Local ์ ์ฅ์ ๋ง๋ค๊ธฐ (.git ํด๋)
ํ๋ก์ ํธ๋ฅผ git repository๋ก ๋ง๋ค๊ธฐ ์ํด์ ์ฌ์ฉํ๋ ๋ช
๋ น์ด
(ํ๋ก์ ํธ = ๊ฐ๋ฐํ๊ณ ์ ํ๋ ์์ค์ฝ๋๋ค์ด ์๋ ๋๋ ํ ๋ฆฌ)
(1 - 2) git clone/๋ก์ปฌ/์ ์ฅ์/๊ฒฝ๋ก
gthun์์ ๋ง๋ ์ ์ฅ์๋ฅผ github์ url์ ํตํด Local๋ก ๋ณต์ฌํ๊ธฐ
(2) git remote add origin repository address
git clone
์ผ๋ก ๊ธฐ์กด ์๊ฒฉ ์ ์ฅ์๋ฅผ ๋ณต์ ํ์ผ๋ฉด skip,
์๋๋ผ๋ฉด ํ์ฌ ์๊ฒฉ ์๋ฒ์ ์ฃผ์๋ฅผ git์๊ฒ ์๋ ค์ค์ผ ํ๋ค.
(3) git config --global user.name "user name"
(4) git config --global user.email "user e-mail"
์์ธํ ์ค์ ๋ฒ์ ์ ํ๋ธ ์ฐธ๊ณ