๐ฆ ํ์ฌ์์๋ SVN์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์๊ธฐ ์ ์ Git ์ฌ์ฉ๋ฒ๋ ๊ธฐ๋กํด๋์!
ํ์๊ด๋ฆฌ(Version Control Revision Control)ํด
- ์ํํธ์จ์ด ๋ฒ์ ๊ด๋ฆฌ ํด์ด๋ผ๊ณ ๋ ํ๋ค.
- ํ์๊ด๋ฆฌ๋ ์์ค์ ๋ณํ๋ฅผ ๋์์์ด ๊ด๋ฆฌํ๋ ๊ฒ์ ๋งํ๋ค.
- ์์ค๋ฅผ ๋ฒ์ ๋ณ๋ก ๊ด๋ฆฌํ ์ ์์ด์ ๊ฐ๋ฐํ ๋ ์ค์๋ก ์์ค๋ฅผ ์ญ์ ํ๊ฑฐ๋, ์์ ํ๊ธฐ ์ด์ ์ผ๋ก ๋์๊ฐ์ผ๋๋ ๊ฒฝ์ฐ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๋ ํด.
- ๋ํ ํ ํ๋ก์ ํธ์์๋ ๋๊ฐ ๋ฌด์์ ์ด๋ป๊ฒ ์์ ํ๋์ง๋ ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ฝ๋๋ฅผ ๋ณํฉํ๊ฑฐ๋ ์์ ๋ ์์ค๋ฅผ ์ถ์ ํ๋ ๋ฐ์๋ ์ฐ์ธ๋ค.
โถ 0.1 SVN
โถ 0.2 GIT
โถ 0.3 SVN vs GIT ๋น๊ต
0.3.1 SVN
SVN์ ๋ณดํต ๋๋ถ๋ถ์ ๊ธฐ๋ฅ์ ์์ฑํด๋๊ณ ์์ค๋ฅผ ์ค์ ์ ์ฅ์์ commit
commit์ ์ด๋ฏธ ์์ฒด๊ฐ ์ค์ ์ ์ฅ์์ ํด๋น ๊ธฐ๋ฅ์ ๊ณต๊ฐํ๋ค๋ ์๋ฏธ.
(GIT ๊ณผ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ) ๊ฐ๋ฐ์๊ฐ ์์ ๋ง์ version history๋ฅผ ๊ฐ์ง ์ ์๋ค. (๊ทธ๋ ๊ธฐ ๋๋ฌธ์ local History๋ฅผ ์ด์ฉํ๊ธด ํ์ง๋ง, ์ผ์์ ์ด๋ค. ๋ด๊ฐ ๋ช์ผ์ ๊น์ง์ ํํ์ฌ ์์ ํ๋ ๋ด์ญ์ ํ์ธ ๊ฐ๋ฅํ์ง๋ง ๋ฒ์ ๊ด๋ฆฌ๊ฐ ๋์ง ์๋๋ค.)
commitํ ๋ด์ฉ์ ์ค์๊ฐ ์์ ์์ ๋ค๋ฅธ ๊ฐ๋ฐ์์๊ฒ ๋ฐ๋ก ์ํฅ์ ๋ฏธ์น๊ฒ ๋๋ ๋จ์ ๋ ์๋ค.
0.3.2 GIT
(GIT ๊ณผ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ) ๋ฐ๋ฉด, git์ ๊ฐ๋ฐ์๊ฐ ์์ ๋ง์ commit history๋ฅผ ๊ฐ์ง ์ ์๊ณ , ๊ฐ๋ฐ์์ ์๋ฒ์ ์ ์ฅ์๋ ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅ.
commitํ ๋ด์ฉ์ ์ค์๊ฐ ์๋๋ผ๋ ์ด ๋ฐ๋ก ์๋ฒ์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค
๊ฐ๋ฐ์๋ ๋ง์๋๋ก commit(push)ํ๋ค๊ฐ ์์ ์ด ์ํ๋ ์๊ฐ์ ์๋ฒ์ ๋ณ๊ฒฝ ๋ด์ญ(commit history)์ ๋ณด๋ผ ์ ์์ผ๋ฉฐ, ์๋ฒ์ ํตํฉ ๊ด๋ฆฌ์๋ ๊ด๋ฆฌ์๊ฐ ์ํ๋ ์๊ฐ์ ๊ฐ ๊ฐ๋ฐ์์ commit history๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์.
์ด๋ ๊ฒ git์ ์๋ฒ ์ ์ฅ์์ ๊ฐ๋ฐ์ ์ ์ฅ์๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก commit history๋ฅผ ๊ฐ์ ธ๊ฐ ์ ์๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ์ ์ฐํ ๋ฐฉ์์ผ๋ก ์์ค๋ฅผ ์ด์ํ ์ ์์ผ๋ฉฐ, ์ด๋ฌํ ์ ์ฐ์ฑ์ด git์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ด๋ค.
์ฐธ๊ณ ๋ก ํ์ ๊ด๋ฆฌ ๋๊ตฌ๋ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ด๋ผ๊ณ ๋ ํ๋ค.
Git์ ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ๋ ๊ธฐ์ ์ ํต์ฌ ์์ฐ์ธ ์์ค์ฝ๋๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ ๋ฌด๋ฃ, ๊ณต๊ฐ์ํํธ์จ์ด.
SVN๋ณด๋ค ์ฌ๋ฌ ์ฅ์ ์ด ์์ด SVN์ ์ฐ๋ ๊ฐ๋ฐ ์กฐ์ง๋ค์ ํ๋๋์ฉ Git์ผ๋ก ๊ฐ์ํ๊ณ ์๋ค.
Git์ด SVN๊ณผ ๋ค๋ฅธ ์ ์ ๋ถ์ฐํ ๊ด๋ฆฌ ์์คํ ์ด๋ผ๋ ๊ฒ์ด๋ค.
SVN : ์ค์ ์๋ฒ์ ์์ค์ฝ๋์ ํ์คํ ๋ฆฌ๋ฅผ ์ ์ฅํ๋ ๊ณผ ๋ฌ๋ฆฌ
Git : ์์ค์ฝ๋๋ฅผ ์ฌ๋ฌ ๊ฐ๋ฐ PC์ ์ ์ฅ์์ ๋ถ์ฐํด์ ์ ์ฅ
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ค์ ์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํด๋ ๋ก์ปฌ ์ ์ฅ์์ ์ปค๋ฐ์ ํ ์ ์์ผ๋ฉฐ, ๋ก์ปฌ ์ ์ฅ์๋ค์ ์ด์ฉํ์ฌ ์ค์ ์ ์ฅ์์ ๋ณต์๋ ๊ฐ๋ฅํ๋ค.
์ฌ๋ณธ์ ๋ก์ปฌ์์ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ GIT์ด SVN์ ๋นํด ํจ์ฌ ๋น ๋ฅด๋ค. (SVN์ ๋ณ๊ฒฝ ๋ก๊ทธ ํ๋ ๋ณด๋ ๊ฒ๋ ์ธํฐ๋ท์ ๊ฒฝ์ ํด์ผ ํ๋ค.)
์์ค์ฝ๋๋ฅผ ์ฃผ๊ณ ๋ฐ์ ํ์ ์์ด, ๊ฐ์ ํ์ผ์ ์ฌ๋ฌ ๋ช ์ด ๋์์ ์์ ํ๋ ๋ณ๋ ฌ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ค.
์ฆ ๋ธ๋์น๋ฅผ ํตํด ๊ฐ๋ฐํ ๋ค, ๋ณธ ํ๋ก๊ทธ๋จ์ ํฉ์น๋ ๋ฐฉ์(Merge)์ผ๋ก ๊ฐ๋ฐ์ ์งํํ ์ ์๋ค.
๋ถ์ฐ ๋ฒ์ ๊ด๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ์ธํฐ๋ท์ด ์ฐ๊ฒฐ๋์ง ์์ ๊ณณ์์๋ ๊ฐ๋ฐ์ ์งํํ ์ ์์ผ๋ฉฐ, ์ค์ ์ ์ฅ์๊ฐ ๋ ๋ผ๊ฐ๋ฒ๋ ค๋ ๋ค์ ์์๋ณต๊ตฌํ ์ ์์ต๋๋ค.
ํ ํ๋ก์ ํธ๊ฐ ์๋, ๊ฐ์ธ ํ๋ก์ ํธ์ผ์ง๋ผ๋ GIT์ ํตํด ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํ๋ฉด ์ฒด๊ณ์ ์ธ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํด์ง๊ณ , ํ๋ก๊ทธ๋จ์ด๋ ํจ์น๋ฅผ ๋ฐฐํฌํ๋ ๊ณผ์ ๋ ๊ฐ๋จํด์ง๋๋ค.
(pull์ ํตํ ์
๋ฐ์ดํธ, patch ํ์ผ ๋ฐฐํฌ)
Git : ํ์ ๊ด๋ฆฌ ๋๊ตฌ(๋ฒ์ ๊ด๋ฆฌ ์์คํ )
Github : ํ์ ๊ด๋ฆฌ ๋๊ตฌ(๋ฒ์ ๊ด๋ฆฌ) ์นํธ์คํ ์๋น์ค
ex) GitHub, GitLab, BitBucket
ex) GitHub Desktop, SourceTree, GitKraken
Repository : ์ ์ฅ์๋ฅผ ์๋ฏธํ๋ฉฐ, ์ ์ฅ์๋ ํ์คํ ๋ฆฌ, ํ๊ทธ, ์์ค์ ๊ฐ์ง์น๊ธฐ ํน์ branch์ ๋ฐ๋ผ ๋ฒ์ ์ ์ ์ฅํ๋ค. ์ ์ฅ์๋ฅผ ํตํด ์์ ์๊ฐ ๋ณ๊ฒฝํ ๋ชจ๋ ํ์คํ ๋ฆฌ๋ฅผ ํ์ธ ํ ์ ์๋ค.
Working Tree : ์ ์ฅ์๋ฅผ ์ด๋ ํ ์์ ์ ๋ฐ๋ผ๋ณด๋ ์์ ์์ ํ์ฌ ์์ .
Staging Area : ์ ์ฅ์์ ์ปค๋ฐํ๊ธฐ ์ ์ ์ปค๋ฐ์ ์ค๋นํ๋ ์์น.
Commit : ํ์ฌ ๋ณ๊ฒฝ๋ ์์ ์ํ๋ฅผ ์ ๊ฒ์ ๋ง์น๋ฉด ํ์ ํ๊ณ ์ ์ฅ์์ ์ ์ฅํ๋ ์์ .
Head : ํ์ฌ ์์ ์ค์ธ Branch๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
Branch : ๊ฐ์ง ๋๋ ๋ถ๊ธฐ์ ์ ์๋ฏธํ๋ฉฐ, ์์ ์ ํ ๋์ ํ์ฌ ์ํ๋ฅผ ๋ณต์ฌํ์ฌ Branch์์ ์์ ์ ํ ํ์ ์์ ํ๋ค ์ถ์๋ Merge๋ฅผ ํ์ฌ ์์ ์ ํ๋ค.
Merge : ๋ค๋ฅธ Branch์ ๋ด์ฉ์ ํ์ฌ Branch๋ก ๊ฐ์ ธ์ ํฉ์น๋ ์์ ์ ์๋ฏธํ๋ค.
git init : ๋ฒ์ ๊ด๋ฆฌ ํ๊ณ ์ถ์ ํด๋์์ ์ด๊ธฐํ๋ฅผ ํ๋ ์ค๋น
git branch
๋ ๋ฆฝ์ ์ธ ๊ณต๊ฐ์ ๋ง๋ ๋ค.
์๋ก ๋ง๋ branch lab1์ master์ ์์ ํ ๋์ผํ ์ํ๋ฅผ ๊ฐ์ง ๊ณต๊ฐ.
๋ธ๋์น์์ ์์ ์ ํ ํ ์ปค๋ฐํ๋ฉด lab1์๋ง ๊ธฐ๋ก๋๋ฉฐ master ๋ธ๋์น์๋ ์ด๋ค ์ํฅ๋ ์ฃผ์ง ์๋๋ค.
์ํ๋ ๋งํผ ๋น ๋ฅด๊ฒ branch๋ฅผ ๋ง๋ค ์ ์๋ค.
(cf > ์์ ์ค์ธ ์์น๋ฅผ ๊ฐ๋ฅดํค๋ ๊ฐ์์ ์ปค์๊ฐ ์กด์ฌํ๋๋ฐ ์ด๋ฅผ git์์๋ HEAD๋ผ ํ๋ค.)
์คํ ์ฑ๊ณต : lab1 ๋ธ๋์น์ ๋ด์ฉ์ ๋ง์คํฐ ๋ธ๋์น์ ๋ณํฉ(Merge) ํ๋ค.
์คํ ์คํจ : lab1 ๋ธ๋์น๋ฅผ ์ญ์ ํ๋ค.
checkout
git commit
pull
master
๋๋ฃ์ ํจ๊ป ์์ ํ๋ ค๋ฉด? -> github! or bitbucket
git์ 'remote ์ ์ฅ์'๋ฅผ ์ง์ํ๋ค.
github์ด ๋ฐ๋ก remote์ ์ฅ์์ด๋ค.
bitbucket์ 5๋ช ๊น์ง ๊ณต๋์์ ๊ฐ๋ฅํ๋ค. (๊ทธ ์ด์์ ์ ๋ฃ)
github์ private๊ฐ ์ ๋ฃ์ด๋ค.
์ถ์ฒ: https://goddaehee.tistory.com/91 [๊ฐ๋ํฌ์ ์์๊ณต๊ฐ]
์ง์ง์ฐ