๊ฐ์ธ ํ๋ก์ ํธ ์ค๋น๋ฅผ ์ํด ๊น๊ณผ ๊นํ๋ธ์ ๋ํด์ ์งง๊ฒ๋๋ง ์ ๋ฆฌํด๋๋ ค๊ณ ํ๋ค.
๊นํ๋ธ ์ด์ ์ ๊น์ด๋ ๋ฌด์์ธ์ง ์์๋ณด์.
Git : Local ๋ด์์ ์์ค์ฝ๋๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ผ๋ก ๊ฒน์ณ ์ฐ์ง ์๊ฒ ํ๋ก์ ํธ์ ๋ณ๊ฒฝ์ ๊ด๋ฆฌํ๋ ๋ฒ์ ๊ด๋ฆฌ ์ํํธ์จ์ด
Github : Local์์ ๊ด๋ฆฌํ ์์ค์ฝ๋๋ฅผ ์ ๋ก๋ํ๊ณ ๊ณต์ ํ ์ ์๋ ๊ณต๊ฐ์ ๋งํ๋ค. ๊น์ ๋ฐฐ์ฐ์ง ์๊ณ ๊นํ๋ธ๋ฅผ ์ด์ฉํ ์๋ ์์ง๋ง ๊ทธ ๊ฐ์น๋ฅผ ์ถฉ๋ถํ ์ฌ์ฉํ์ง ๋ชปํ๋ค.
๋์ฑ ๊ฐ๋จํ๊ฒ ์ค๋ช ํ๋ฉด git์ ์ฐ๋ฆฌ๊ฐ ์์ฑํ ์ฝ๋์ ์ค๋ ์ท์ ๋งํ๊ณ ๊นํ๋ธ๋ ๊ทธ ์ค๋ ์ท์ ์น์์์ ๊ณต์ ํ๊ณ ๋ฒ์ ์ ํ์ธํ๋ ๋ฑ ๊ด๋ฆฌํ ์ ์๊ฒ ๋์์ฃผ๋ ๋๊ตฌ์ ๊ฐ๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ช ๊ฐ์ง ๊ธฐ๋ณธ์ ์ธ ์ฉ์ด๋ค์ ์์๋ณด์.
1. ์ปค๋งจ๋ ๋ผ์ธ(Command Line) : ๊น์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ ๋ ์ฌ์ฉํ๋ ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ผ๋ก์ ๋ฆฌ๋ ์ค๋ฅผ ์ด์ฉํ๋ ์ฌ๋๋ค์ ํฐ๋ฏธ๋์ ํตํด ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ ๊ฒ์ ๋งํ๋ค. ์ฌ๊ธฐ์๋ ๋ง์ฐ์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ ํ ์คํธ ๊ธฐ๋ฐ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ผ ํ๋ค.
2. ์ ์ฅ์(Repository): Repo๋ผ๊ณ ์ค์ฌ์ ์ฌ์ฉํ๊ธฐ๋ ํ๋ฉฐ ์์ ๋งํ ๋ก์ปฌ ์ ์ฅ์์ ๋๋ถ์ด ๊นํ๋ธ์ ๊ฐ์ ์จ๋ผ์ธ ํธ์คํธ์ ์ ์ฅ๊ณต๊ฐ ๋ํ ๋๋ฃจ์ด ๋งํ๋ค. ์ฆ, ํ๋ก์ ํธ๋ ์ฝ๋๊ฐ ์์ ์ ์๋ ๋๋ ํฐ๋ฆฌ๋ ์ ์ฅ ๊ณต๊ฐ์ ๋งํ๋ค.
3. ์ปค๋ฐ(Commit) : ๊น์๊ฒ ์์ด์ ์ค์ํ ๋ช ๋ น์ด ์ค ํ๋. ํ๋ก์ ํธ๋ ์ฝ๋๋ฅผ ์ปค๋ฐํ๋ฉด ๊ทธ ์์ ์ ์ฐ๋ฆฌ์ ๋ก์ปฌ ์ ์ฅ์์ ์ค๋ ์ท์ ์ฐ์ด๋์ด ์ธ์ ๋ ์ด์ ์ ์ํ๋ก์ ๋ณต์์ด๋ ์ฌํ์ธ์ด ๊ฐ๋ฅํ ์ง์ ์ ๋ง๋ค์ด์ค๋ค.
4. ๋ธ๋์น(Branch) : ์ฌ๋ฌ ๋ช ์ด์ ํ๋์ ํ๋ก์ ํธ๋ฅผ ํ ๋ ๋ธ๋์น๋ผ๋ ๊ฐ๋ ์ด ํ์ํ๋ค. ๋ฉ์ธ ํ๋ก์ ํธ์ ๋ธ๋์น๋ฅผ ๊ฐ์ง๊ณ ์์(Branch off) ์์ - ์ถ๊ฐ - ์ญ์ ๋ฑ์ ์ํํ๊ณ ์ด๋ฅผ ๋ฉ์ธ ๋๋ ํฐ๋ฆฌ(Master)์ ๋ค์ ํฉ๋ณ(Merge)ํจ์ผ๋ก์จ ๊ณต๋์ผ๋ก ์์ ์ ํ ์ ์๊ฒ ๋์์ค๋ค. ์ด๋ ๊ฒ ๋ฟ๋ฆฌ๋ฅผ ๋๊ณ ์ฌ๋ฌ ์ฌ๋์ด ๊ฐ์ง๋ฅผ ๋ถ์๋ค ๋์ด๋๋ค ํ๋ฉด์ ํ๋์ ๋๋ฌด๋ฅผ ๋ง๋ ๋ค๊ณ ์๊ฐํ๋ฉด ์ข๋ค.
- Master - ๋๋ฌด๋ก ์น๋ฉด ๋ฟ๋ฆฌ์ ํด๋นํ๋ ๋ชจ๋ ์์ ์ ์ค์ฌ.
- Merge - Branch๋ฅผ Master์ ํฉ๋ณํ๋ ๊ฒ. ๋๋ฌด์ ์๋ ๊ฐ์ง๋ฅผ ๋ถ์ด๋ ์์ ์ด๋ผ๊ณ ์๊ฐ.
์ด์ ๊น์ ๊ธฐ๋ณธ์ ์ธ ๋ช ๋ น์ด๋ ๋ช๊ฐ์ง ์์๋ณด์. (ํฐ๋ฏธ๋๊ณผ ๊ฐ์ ์ปค๋งจ๋ ๋ผ์ธ์ ์ฌ์ฉํ ๋)
๋ชจ๋ git์ผ๋ก ์์ํ๋ ๋ช ๋ น์ด์ด๋ค.
- git init: ๊น ์ ์ฅ์๋ฅผ ์ด๊ธฐํํ๋ค. ์ ์ฅ์๋ ๋๋ ํฐ๋ฆฌ ์์์ ์ด ๋ช ๋ น์ ์คํํ๊ธฐ ์ ๊น์ง๋ ๊ทธ๋ฅ ์ผ๋ฐ ํด๋์ด์ง๋ง ์ ๋ ฅํ ํ์ ์ถ๊ฐ์ ์ธ ๊น ๋ช ๋ น์ด๋ค์ ์ค ์ ์๊ฒ ๋๋ค.
- git config: 'configure'์ ์ค์๋ง๋ก์ ์ฒ์์ ๊น์ ์ค์ ํ ๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๋ช ๋ น์ด์ด๋ค.
- git help: ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๊น ๋ช ๋ น์ด๋ค์ด ๋ํ๋๋ค. ์ข ๋ ์์ธํ๊ฒ 'git help init'์ฒ๋ผ ํน์ ๊น ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๊ณ ์ค์ ํ๋ ๋ฒ์ ์ดํดํ ์๋ ์๋ค.
- git status: ์ ์ฅ์ ์ํ๋ฅผ ์ฒดํฌ. ์ด๋ค ํ์ผ์ด ์ ์ฅ์ ์์ ์๋์ง, ์ปค๋ฐ์ด ํ์ํ ๋ณ๊ฒฝ์ฌํญ์ด ์๋์ง, ํ์ฌ ์ ์ฅ์์ ์ด๋ค ๋ธ๋์น์์ ์์ ํ๊ณ ์๋์ง ๋ฑ์ ๋ณผ ์ ์๋ค.
- git add: ์ ์ฅ์์ ์ ํ์ผ๋ค์ ์ถ๊ฐํ์ง ์๋๋ค. ๋ค๋ง ๊น์ด ์ ํ์ผ๋ค์ ์ง์ผ๋ณด๊ฒ ํ๋ค. ํ์ผ์ ์ถ๊ฐํ๋ฉด, ๊น์ ์ ์ฅ์ “์ค๋ ์ท”์ ํฌํจ๋๋ค.
- git commit: ์ด๋ค ๋ณ๊ฒฝ์ฌํญ์ด๋ผ๋ ๋ง๋ ํ, ์ ์ฅ์์ “์ค๋ ์ท”์ ์ฐ๊ธฐ ์ํด ์ด๊ฒ์ ์ ๋ ฅํ๋ค. ๋ณดํต “git commit -m “Message” ํ์์ผ๋ก ์ฌ์ฉํ๋ค. '-m' ์ ๋ช ๋ น์ด์ ๊ทธ๋ค์ ๋ถ๋ถ์ ๋ฉ์์ง๋ก ์ฝ์ด์ผ ํ๋ค๋ ๊ฒ์ ๋งํ๋ค.
- git branch: ์๋ก์ด ๋ธ๋์น๋ฅผ ๋ง๋ค๊ณ , ์์ ๋ง์ ๋ณ๊ฒฝ์ฌํญ๊ณผ ํ์ผ ์ถ๊ฐ ๋ฑ์ ์ปค๋ฐ ํ์๋ผ์ธ์ ๋ง๋ ๋ค. ์๋ก์ด ๋ธ๋์น๋ฅผ “cats”๋ก ๋ถ๋ฅด๊ณ ์ถ์ผ๋ฉด, git branch cats๋ก ์ ๋ ฅํ๋ฉด ๋๋ค.
- git checkout: ๊ธ์ ๊ทธ๋๋ก, ํ์ฌ ์์นํ๊ณ ์์ง ์์ ์ ์ฅ์๋ฅผ “์ฒดํฌ์์”ํ ์ ์๋ค. ์ด๊ฒ์ ์ฒดํฌํ๊ธธ ์ํ๋ ์ ์ฅ์๋ก ์ฎ๊ฒจ๊ฐ๊ฒ ํด์ฃผ๋ ํ์ ๋ช ๋ น์ด๋ค. master ๋ธ๋์น๋ฅผ ๋ค์ฌ๋ค๋ณด๊ณ ์ถ์ผ๋ฉด, git checkout master๋ฅผ ์ฌ์ฉํ ์ ์๊ณ , git checkout cats๋ก ๋ ๋ค๋ฅธ ๋ธ๋์น๋ฅผ ๋ค์ฌ๋ค๋ณผ ์ ์๋ค.
- git merge: ๋ธ๋์น์์ ์์ ์ ๋๋ด๊ณ , ๋ชจ๋ ํ์ ์๊ฐ ๋ณผ ์ ์๋ master ๋ธ๋์น๋ก ๋ณํฉํ ์ ์๋ค. git merge cats๋ “cats” ๋ธ๋์น์์ ๋ง๋ ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ์ master๋ก ์ถ๊ฐํ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
- git push: ๋ก์ปฌ ์ปดํจํฐ์์ ์์ ํ๊ณ ๋น์ ์ ์ปค๋ฐ์ ๊นํ๋ธ์์ ์จ๋ผ์ธ์ผ๋ก๋ ๋ณผ ์ ์๊ธฐ๋ฅผ ์ํ๋ค๋ฉด, ์ด ๋ช ๋ น์ด๋ก ๊นํ๋ธ์ ๋ณ๊ฒฝ์ฌํญ์ “push”ํ๋ค.
- git pull: ๋ก์ปฌ ์ปดํจํฐ์์ ์์ ํ ๋, ์์ ํ๊ณ ์๋ ์ ์ฅ์์ ์ต์ ๋ฒ์ ์ ์ํ๋ฉด, ์ด ๋ช ๋ น์ด๋ก ๊นํ๋ธ๋ก๋ถํฐ ๋ณ๊ฒฝ์ฌํญ์ ๋ค์ด๋ก๋ํ๋ค.