Git
โ๏ธ Today I Learned
1. Git
-
Git์ด๋ ๋ถ์ฐํ ๋ฒ์ ๊ด๋ฆฌ ์์คํ (Version Control System) ์ ํ ์ข ๋ฅ์ด๋ฉฐ, ๋น ๋ฅธ ์ํ ์๋์ ์ค์ ์ ๋๋ค.
-
โ๋ฒ์ ๊ด๋ฆฌ ์์คํ โ ์ด๋ ํ์ผ ๋ณํ๋ฅผ ์๊ฐ์ ๋ฐ๋ผ ๊ธฐ๋กํ๋ค๊ฐ ์ดํ์ ํน์ ์์ ์ ๋ฒ์ ์ ๋ค์ ๊บผ๋ด์ฌ ์ ์๋ ์์คํ ์ด๋ค.
๋์ผํ ์ ๋ณด์ ๋ํ ์ฌ๋ฌ ๋ฒ์ ์ ๊ด๋ฆฌํ๊ฒ ๋๋ฉฐ, ๋ฒ์ ์ ํตํด ์๊ฐ์ ์ผ๋ก ๋ณ๊ฒฝ ์ฌํญ๊ณผ ๋ณ๊ฒฝ ์ฌํญ์ ์์ฑํ ์์ ์๋ฅผ ์ถ์ ํ ์ ์๋ค.
-
1-1. GitHub
-
Git์ ํตํ์ฌ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํ๋ค ์ด๋ฏธ ์ธ๊ธ์ํ์๋ค.
๊ทธ๋ ๋ค๋ฉด Github๋ ๋ฌด์์ผ๊น? Github๋ Git Repository๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์๋น์ค์ด๋ค.
์ฆ, Git์ผ๋ก ๋ฒ์ ์ ๊ด๋ฆฌํ๋ ํด๋์ ๋ํด์ Github์ ํตํด ์ฌ๋ฌ ์ฌ๋๋ค์ด ๊ณต์ ํ๊ณ ์ ๊ทผํ ์ ์๊ฒ๋๊ธฐ๋๋ฌธ์ Git์ด ๋ถ์ฐํ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ผ๋ก ๋ถ๋ฆฌ์ธ ์ ์๊ฒ๋๋ค.
1-2. Git Repository
-
๋ด๊ฐ ์์ ํ๋ ์์ค ์ฝ๋ ํด๋๊ฐ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ๋ฐ๊ฒ ํ๊ธฐ ์ํด์๋ ๋ด ํด๋๋ฅผ Git์ ๊ด๋ฆฌ ์๋์ ๋์ด์ผ ํ๋ค. ์ด๋ Git์ผ๋ก ๊ด๋ฆฌ๋๋ ํด๋๋ฅผ Git repository ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
Git repository ๋ Remote Repository์ Local Repository ๋ ์ข ๋ฅ์ ์ ์ฅ์๋ฅผ ์ ๊ณตํ๋ค.
-
Remote Repository : ์๊ฒฉ ์จ๋ผ์ธ ์๋ฒ ์์ ์ ์ฅ์์ด๋ค. ์ฌ๋ฌ ์ฌ๋์ด ํจ๊ป ๊ณต์ ๊ฐ ๊ฐ๋ฅํ๋ค.
-
Local Repository : ๋ด ์ปดํจํฐ์ ์ ์ฅ์์ด๋ค. ๊ฐ์ธ ์ ์ฉ ์ ์ฅ์์ด๋ฉฐ ๋ด ์ปดํจํฐ ์์ ์ ์ฅ์์ด๊ธฐ ๋๋ฌธ์ ์คํ๋ผ์ธ ์์ ๋ํ ๊ฐ๋ฅํ๋ค.
-
1-3. Git์ ํตํ ์์ ์ WorkFlow
-
Remote์ ์๋ ๋ค๋ฅธ Repository์์
Fork
๋ฅผ ํด์ Remote์ ์๋ ๋ด Repository์ ๊ฐ์ง๊ณ ์จ๋ค. -
์ด ์ฝ๋๋ฅผ ์์ ํ๊ธฐ ์ํด์๋ ๋ด ์ปดํจํฐ๋ก ๊ฐ์ ธ์ค๋ ์์ ์ด ๋ ํ์ํ๋ค. ๋ด ์ปดํจํฐ์์ ์์ ์ ํ๊ธฐ ์ํด์
git clone
์ ํ๋ค. -
์ด์ ๋ด ์ปดํจํฐ์ ์์ ๊ณต๊ฐ (work space) ์์ ์์ ์ ๋ค์ด๊ฐ ํ์ผ๋ค์ git์ ๊ด๋ฆฌ ํ์ ์๋ ์ํ๋ก ๋ณ๊ฒฝํ ์ ์๋ค.
์ด ์์ญ์
staging area
๋ผ๊ณ ๋งํ๋ค. ์ฆ,staging area
์ ๋ค์ด์ค์ง ์์ ํ์ผ์unstaged
ํน์untracked file
์ด๋ผ๊ณ ๋งํ๋ฉฐ,staging area
์ ์๋ ํ์ผ๋ค์staged
๋ ํ์ผ์ด๋ผ๊ณ ๋งํ ์ ์๋ค.git commit
์ ํ๊ธฐ ์ํด์ ํ์ฌ Local Repository์ ๋ณ๊ฒฝ๋ ํ์ผ๋ค์ด ์ด๋ค๊ฒ์ธ์ง ํ์ธํ๋ ค๋ฉดgit status
๋ฅผ ํตํ์ฌstaging area
์untracked files
๋ชฉ๋ก์ ์ด๋ค ๊ฒ๋ค์ด ์๋์ง ํ์ธํ ์ ์๋ค. -
staging area
์ ๋ค์ด์จ ํ์ผ๋ค์git commit
์ด ๊ฐ๋ฅํ๋ค. commit์ ํ๊ณ ๋๋ฉด ๋ด remote repository์git push
ํด์ commit ๊ธฐ๋ก์ remote ์๋ ๋จ๊ฒจ์ค ์ ์๋ค.๋จ๊ธด commit๋ค์ด ์ ๊ธฐ๋ก๋์ด์๋์ง ํ์ธํ๋ ค๋ฉด
git log
๋ฅผ ํตํ์ฌ ๋ก๊ทธ๋ค์ ํฐ๋ฏธ๋ ์ฐฝ์์ ํ์ธํ ์ ์๋ค. -
git push
๋ฅผ ์๋ฃํ ํ ์ด์ remote์ ์๋ ๋ ํ์งํ ๋ฆฌ์pull request
๋ฅผ ๋ณด๋ด๋ฉด Remote Repository๋ก ๋ด๊ฐ ์์ ํ ์ฝ๋๋ฅผ ์ ๋ก๋ํ ์ ์๋ค.
๐ค Understanding
-
๊น๊น๊น๊น๊น. ๋ง๋ก๋ง ๋ค์์ง ์ ํ์ ์ ์ ๋ฆฌํ๋ฉฐ, ๋ถ์ฐ๊ด๋ฆฌ์ ์ ๋ฆฌํ๋ฉฐ.. ๋ฒ์ ๊ด๋ฆฌ์ ์ ๋ฆฌํ๋ฉฐ.. ๋ง์ ๊ธฐ์ ๋ค์ด ํด๋น ํด์ ๋ชจ๋ ์ฌ์ฉํ๋์ง ์งง์ ์๊ฐ์ด์ง๋ง ํฌ๊ฒ ์๋ฟ์๋ค.
ํ์ ๊ณผ์ ์ค commit์ ๋ค์ฌ๋ค๋ณด๋ฉด ๋๊ฐ..์ธ์ ..๋ช๋ถ์ ์.. ๋ฌด์จ์์ ์..๋ฌด์จ์ฝ๋๋ฅผ ๋ป์ง(?)๊ฑฐ๋ฆฌ ํ์๋์ง ์ ๋๋ผํ๊ฒ ๋์ค๋๊ฑธ ๋ณด๋ ์ ๋ง ํฌ๋ช ํ๊ณ ์ค์๊ฐ์ผ๋ก ์ฝ๋์ ์ง๊ฐ ๋๋ค๋ ๋๋์ ๋ฐ์๋ค.
-
๋ฆฌ์กํธ ์ ํํ์ต ์ํด ์ ์ ํ ์ฝ๋ฉ์ ํ ์ ํ๋ธ ๊ฐ์๊ฐ ์๊ณ ๋ณด๋โฆ์ ๋ฃ ๊ฐ์์๋ค.
์ ํ๋ธ ์ฝ๋ฉ์๋ง ๋์ ์์ ์ด ์ ์ตํด๋ณด์ด๋ฉฐ ๋๊น์ง ๋ฌด๋ฃ๋ก ์๊ฐ์ด ๊ฐ๋ฅํด๋ณด์ธ๋ค. ๋ฆฌ์กํธ ํด๋ก ์ฝ๋ฉ ๋ฐ ๋ฐ๋ผํ๊ธฐ ๊ฐ์๋ ์ฐ์ ์ฝ๋ฉ์๋ง ์ฑ๋๋ก ์งํํด๋ณผ ์์ ์ด๋ค.