Git์ด๋?
- ๋ถ์ฐํ ๋ฒ์ ๊ด๋ฆฌ ์์คํ
(VCS, Version Control System)
Git์ ํ์์ฑ
- ์ต์ข
ํ์ผ์ ์ ์ฅํ๋ฉด ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ๋ฐฑ์
ํ์ผ์ ๋ง๋ค์ด ๋์ง ์์ผ๋ฉด ๋ค์ ๋์๊ฐ ์ ์๋ค. ๋ ํ์ผ์ด ๋ง์์ง๋ฉด ํ๋ํ๋ ๋ฐฑ์
ํ์ผ์ ๋ง๋ค์ด๋๊ธฐ ์ด๋ ต๋ค. ํ์ง๋ง Git์ ์ด์ฉํ๋ฉด ์ด์ ๋ฒ์ ์ ์ค๋
์ท(๋ฐฑ์
๋ณต์ฌ๋ณธ)์ผ๋ก ์ ์ฅํด๋๊ณ ์ด์ ์ผ๋ก ๋์๊ฐ๊ณ ์ถ์ ๋ฒ์ ์ผ๋ก ์ฝ๊ฒ ๋์๊ฐ ์ ์๋ค. ๋ํ ๋ง์ ์ฌ๋๊ณผ ๊ฐ์ ํ์ผ์ ๋์์ ์์
ํ ๋ ๋ฌธ์ ๊ฐ ์๊ธด๋ค๋ฉด ๋์ ์๋๋ฐฉ์ด ์ํ๋ ๋ฒ์ ์ผ๋ก ์ฝ๊ฒ ๋์๊ฐ ์์
์ ์งํํ ์ ์๋ค.
๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ์ด์
- ํ์ผ์ด ๋ณ๊ฒฝ๋๋ฉด ๋ณ๊ฒฝ ์ด๋ ฅ(๋๊ฐ, ์ธ์ , ๋ฌด์์, ์ถ๊ฐ/์์ /์ญ์ )์ ์ ์ฅํ ์ ์๋ค.
- ์ด์ ๋ฒ์ ์ผ๋ก ๋์๊ฐ ์ ์๋ค.
- ์ด๋ค ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ์ํ๋์ง ์์๋ณด๊ธฐ ์ฝ๋ค.
(ํน์ ์์ ์ ์ ์ฅ๋ ๋ฒ์ ๊ณผ ๋น๊ต)
- ํ์
ํ๊ธฐ ์ข๋ค.
- ๋ฐฑ์
Git Repository(git directory)
- ํ์ผ์ด๋ ํด๋๋ฅผ ์ ์ฅํด๋๋ ๊ณณ
- ์์
ํ๋ ์์ค ์ฝ๋ ํด๋๋ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ๋ฐ๊ฒํ๊ธฐ ์ํด์ ๋ด ํด๋๋ฅผ Git์ ๊ด๋ฆฌ ์๋ ๋์ด์ผ ํ๋ค. Git์ผ๋ก ๊ด๋ฆฌ๋๋ ํด๋๋ฅผ Git repository๋ผ๊ณ ํ๋ค.
- Remote Repository
์๊ฒฉ ์จ๋ผ์ธ ์๋ฒ ์์ ์ ์ฅ์(์ฌ๋ฌ ์ฌ๋๊ณผ ๊ณต์ ๊ฐ๋ฅ)
- Local Repository
๋ด ์ปดํจํฐ์ ์ ์ฅ์(๋ด ๊ฐ์ธ ์ ์ฅ์)
๊ธฐ๋ณธ ์ฉ์ด
- fork : ๋ค๋ฅธ ํ๋ก์ ํธ์ ๊ธฐ์ฌํ๊ธฐ์ํด ํด๋น Remote Repository์ ํ๋ก์ ํธ๋ฅผ ๋์ Remote Repository๋ก ๋ฐ์์ค๋ ์์
- clone : ๋์ Remote Repository๋ก ๋ถ๋ฌ์จ ํ๋ก์ ํธ๋ฅผ ๋์ Local Repository๋ก ๋ฐ์์ค๋ ์์
- commit : ๋ณ๊ฒฝ ์ฌํญ์ ๊ธฐ๋กํ๋ ์์
(Local Repository)
- log : ํ์ฌ๊น์ง commit๋ ๋ด์ญ ํ์
- status : ๋ด ๋ก์ปฌ๋ก ๋ณต์ฌํด ์จ ๋๋ ํ ๋ฆฌ์ commit ๋๊ธฐ ์ ๊น์ง์ ์ํ ํ์
- add : unrecked file์ staging area๋ก ์ถ๊ฐ
- push : ๋์ Local Repository์ ๋ณ๊ฒฝ ์ฌํญ(์ปค๋ฐ)์ ๋์ Remote Repository๋ก ๋ณด๋ด์ฃผ๋ ์์
- pull request : ๋ณ๊ฒฝ ์ฌํญ์ด ๋ด๊ธด Remote Repository์ ํ๋ก์ ํธ ๋ฐ์ ์ฌ๋ถ๋ฅผ ์์ฒญํ๋ ์์
- pull : ์คํ ์์ค์ ๊ธฐ์ฌํ๋ Remote Repository์ ๋ณ๊ฒฝ ์ฌํญ์ ๋์ local Repository์ ๋ฐ์์ค๋ ์์
- working directory(work spase) : ํ๋ก์ ํธ๋ฅผ ์์
ํ๋ ๊ณต๊ฐ
- untracked files(unstaged) : Git์ด ํธ๋ํนํ๊ณ ์์ง ์์ ์ํ
- tracked files : Git์ด ํธ๋ํนํ๊ณ ์๋ ์ํ
- unmodified : ์ด์ ๋ฒ์ ์์ ์์ ์ด ์๋ ์ํ
- modified : ์ด์ ๋ฒ์ ์์ ์์ ์ด ๋ ์ํ
- staging area : ๋ฒ์ ํ์คํ ๋ฆฌ์ ์ฎ๊ธธ ์ค๋น(์ปค๋ฐ)๊ฐ ๋ ํ์ผ๋ค์ ๋๋ ๊ณต๊ฐ(Git ๊ด๋ฆฌ ํ์ ์๋ ๊ณต๊ฐ)
- staged : commit์ด ๊ฐ๋ฅํ ์ํ(staging area์ ์๋ ์ํ)
- restore : ์ปค๋ฐ๋์ง ์์ Local Repository์ ๋ณ๊ฒฝ ์ฌํญ์ ์ทจ์
- reset : ์์ง Remote Repositorydo์ ๊ฐ์ง ์์ commit์ ์ทจ์
- revert : ์ด์ ์ปค๋ฐ ๋ด์ญ์ ๋จ๊ธฐ๊ณ ๋์๊ฐ๊ณ ์ ํ๋ ์ปค๋ฐ์ผ๋ก ์ด๋
- head ์ต์
: ๋์๊ฐ๊ณ ์ ํ๋ ์ปค๋ฐ(git reset HEAD๋ฅผ ์ฐ๋ฉด HEAD ์ดํ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ชจ๋ ์ง์ด๋ค)
- soft ์ต์
๋์๊ฐ๊ณ ์ ํ๋ ์ปค๋ฐ(HEAD์ ๊ฐ์ด ๋์๊ฐ์ง๋ง ๋์๊ฐ ์ปค๋ฐ ์ดํ์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ธฐ์ตํ๋ค)
- diff : ???????????
- init : ๊ธฐ์กด ๊ธฐ๋ ํ ๋ฆฌ๋ฅผ Git repository๋ก ๋ณํ
- remote add origin : ๋์ Remote repository์ ์ฐ๊ฒฐ
- branch : ๋
๋ฆฝ์ ์ผ๋ก ์์
์ ์งํํ๊ธฐ ์ํ ๊ธฐ๋ฅ(๋์์ ๋ค์ํ ์์
์ ํ ์ ์๊ฒ ํด์ค๋ค)
- merge : branch ๋ณํฉ
git pull vs git fetch
์ํ์ฝ๋ฉ ๊ฐ์https://www.youtube.com/watch?v=V6R96Hzm8hY
- pull์ Local๊ณผ Remote๊ฐ ๋ณํฉ๋์ด ๋ฐ์์ง๋ค
- fetch๋ Local๊ณผ Remote๊ฐ ๋ณํฉ๋์ง ์๊ณ ๋ฐ์์ง๋ค.
โ๏ธ ์ต์
์ด๋ pull๊ณผ fetch ์ฐจ์ด๋ฅผ ๋ช
ํํ๊ฒ ์ดํดํ์ง ๋ชปํ๋ค. ๋์๊ฒ ์ฃผ๋ง์ด ์๋ค