๐ Git
์ปดํจํฐ ํ์ผ์ ๋ณ๊ฒฝ์ฌํญ์ ์ถ์ ํ๊ณ ์ฌ๋ฌ ์ฌ์ฉ์๋ค ๊ฐ์ ํด๋น ํ์ผ ์์ ์ ์กฐ์จํ๊ธฐ ์ํ ๋ํ์ ์ธ ๋ฒ์ ๊ด๋ฆฌ ์์คํ (VCS) ์ ๋๋ค.
๐ Github
Git์ ์ฌ์ฉํ๋ ํ๋ก์ ํธ๋ฅผ ์ง์ํ๋ ์นํธ์คํ ์๋น์ค๋ก, ๊ฐ๋ฐ์๋ค์ ๋ฒ์ ์ ์ด ๋ฐ ๊ณต๋ ์์ ์ ์ํ ํ๋ซํผ ์ ๋๋ค.
Git์ ์ค์นํ๊ณ , Gitbash๋ฅผ ์ฒ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ์ค์ ํด์ผํ ๊ฒ๋ค์ด ์์ต๋๋ค.
๐ ์๊ฒฉ ์ ์ฅ์ (Remote Repository)
ํ์ผ์ด ์๊ฒฉ ์ ์ฅ์ ์ ์ฉ ์๋ฒ์์ ๊ด๋ฆฌ๋๋ฉฐ, ์ฌ๋ฌ ์ฌ๋์ด ํจ๊ป ๊ณต์ ํ๊ธฐ ์ํ ์ ์ฅ์ ์ ๋๋ค.(git push)
๐ ๋ก์ปฌ ์ ์ฅ์ (Local Repository)
ํ์ผ์ด ์ ์ฅ๋๋ ๊ฐ์ธ ์ ์ฉ ์ ์ฅ์(PC) ์ ๋๋ค.
๋ก์ปฌ ์ ์ฅ์๋ ๋ ผ๋ฆฌ์ ์ผ๋ก Working Directory(์์ ์์ญ) / Index ์์ญ / Header ์์ญ์ผ๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
- Working Directory(์์ ์์ญ) : PC์์ ํ์ฌ ์์ ์ค์ ์๋ ๋๋ ํ ๋ฆฌ(git init) == ์์ ํธ๋ฆฌ(working tree)
- Index ์์ญ : Git์ ์ํด ๋ณ๊ฒฝ ์ฌํญ์ด ์ถ์ ๊ด๋ฆฌ๋๋ ์ปค๋ฐ์ ์ค๋นํ๋ ์์ญ(git add) == Stage(์คํ ์ด์ง)
- Header ์์ญ : PC ๋ด์์ ์ปค๋ฐ๋ค์ด ์๊ตฌ์ ์ผ๋ก ์ ์ฅ๋๋ ์์ญ(git commit)
์ฌ๊ธฐ์ ์ค์ํ ์ ์ Git์ Index ์์ญ์์ 40์์ hashCode์ธ Tree๋ก ๊ด๋ฆฌ(๊ฐ Tree๋ฅผ ์ฐธ์กฐํ๋ ๋ฐฉ์)๋๊ณ ์ด ๊ฒ์ Header ์์ญ์ commit ํ์ผ๋ก ๊ธฐ๋กํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ Index ์์ญ ์์ฒด๊ฐ ๋ฐ๋ก ๋ณต์ ๋์ด ๊ด๋ฆฌ๋๊ธฐ ๋๋ฌธ์ ์ค์๋ก ์กฐ์์ ์๋ชปํ๋๋ผ๋ ์ด๋ค ๋ฐฉ๋ฒ์ผ๋ก๋ ๋ฐฑ์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์กด์ฌํ๋ค๊ณ ํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ ์๋ ์ฌ์ดํธ์์ ์ต์ฃผํธ๋์ "์ง์ฅ์์ ์จ ๊ด๋ฆฌ์ Git"์ "Git 3๊ฐ์ง ์์ญ"์ด๋ผ๋ ๊ฐ์ ์์์ ํตํด ์ดํดํ ์ ์์ต๋๋ค.
๐ Master์ HEAD
Mater๋ ์ฒ์์ ์ ์ฅ์๋ฅผ ๋ง๋ค์์ ๋ ๊ธฐ๋ณธ์ผ๋ก ์์ฑ๋๋ branch๋ฅผ ์๋ฏธํฉ๋๋ค.
HEAD๋ ์ง๊ธ ์์ ์ค์ธ branch ๋๋ commit์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ ์ ๋๋ค.
1๏ธโฃ ์ฌ์ฉ์ ์ ๋ณด ์ค์
Git์ ์ค์นํ ํ ๊ฐ์ฅ ๋จผ์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค. ์ฌ์ฉ์ ์ ๋ณด๋ Git์ด ์ปค๋ฐํ ๋๋ง๋ค ํด๋น ์ ๋ณด๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ผญ ํ์ํ๋ฉฐ, Git GUI ๋๊ตฌ๋ค์ ์ฒ์ ์คํ ์ ์ด ์ค์ ์ ํ ์ ์๋๋ก ํฉ๋๋ค.
--global ์ต์ ์ผ๋ก ์ค์ ํ๋ ๊ฒ์ ๋ฑ ํ ๋ฒ๋ง ๊ฐ๋ฅํ๊ณ , ํ ๋ฒ commit ํ ํ์๋ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
๋ง์ฝ ํ๋ก์ ํธ๋ง๋ค ๋ค๋ฅธ ์ด๋ฆ๊ณผ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด --global ์ต์ ์ ๋นผ๋ฉด ๋ฉ๋๋ค.
Git ๋ฒ์ ์ ํ์ธ
$ git --version
Git ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์ค์
$ git config --global user.name "GONI95"
$ git config --global user.email "git95@example.com"
์ค์ ๊ฐ ํ์ธ (q๋ก ๋น ์ ธ๋๊ฐ ์ ์์ต๋๋ค.)
$ git config --list
Windows์ Mac์์ CRLF ๊ฐํ ๋ฌธ์ ์ฐจ์ด๋ก ์ธํด์ Windows์์ ์์ฑํ ์ฝ๋๊ฐ Unix๊ณ์ด์์ ํธ์งํ ๋ ^M์ด ๋ถ๊ฒ ๋๋๋ฐ, ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ค์ ์ด ํ์ํฉ๋๋ค.
Windows์ ๊ฒฝ์ฐ
$ git config --global core.autocrlf true
Mac์ ๊ฒฝ์ฐ
$ git config --global core.autocrlf input
์ถ๊ฐ์ ์ผ๋ก, ํน์ ๋จ์ด๋ฅผ ์ ๋ ฅํ์ฌ ๋ฏธ๋ฆฌ ์ค์ ํด๋ ๋ช ๋ น์ด๊ฐ ์คํ๋ ์ ์๋๋ก ์ค์ ํ๋ Alias๋ฅผ ์ด์ฉํ์ฌ ๋ช ๋ น์ด์ ๋ํ ๋จ์ถํค๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
๋จ์ถํค ์ค์
$ git config --global alias.st 'status -s'
$ git config --global alias.๋จ์ถํค '๋ช
๋ น์ด'
2๏ธโฃ Git์ ์ฌ์ฉํ๋ ํ๋ก์ ํธ ์์ฑํ๊ธฐ
์ปดํจํฐ์์ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํ๊ธฐ ์ํด Git์ ์ฌ์ฉํ๋ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ฉด ๋น๋ก์ ๋ฒ์ ๊ด๋ฆฌ์ ์ฒซ ๋จ๊ณ์ ๋ค์ด์๊ฒ ๋ฉ๋๋ค.
์์
ํธ๋ฆฌ ์์ฑ
$ mkdir workDirectory
์์
ํธ๋ฆฌ๋ก ์ด๋
$ cd workDirectory
ํ์ฌ ๋๋ ํ ๋ฆฌ์ ๋น์ด์๋ Git ์ ์ฅ์ ์์ฑ ๋๋ ๊ธฐ์กด ์ ์ฅ์๋ฅผ ์ด๊ธฐํ
์ฆ, ํด๋น ํด๋ or ๋๋ ํ ๋ฆฌ๋ฅผ Git ์ ์ฅ์๋ก ์ฌ์ฉํ๊ฒ ๋ค๋ ์๋ฏธ
$ git init
3๏ธโฃ Github Repository์ Git ์ฐ๊ฒฐ
ํ์ฌ Git์ ์ด์ฉํด ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์์ํ์ง๋ง, ์ปดํจํฐ์๋ง ๊ตญํ๋์ด ์์ต๋๋ค. ์ฆ, ์ปดํจํฐ๊ฐ ๊ณ ์ฅ ๋๊ฑฐ๋ ์ค์๋ก ํ๋ก์ ํธ๋ฅผ ์ง์ ์ ๋ ๋ค์ ๋ณต๊ตฌํ ์ ์์ต๋๋ค.
์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ Github์ Repository ์์ฑํด ๋ก์ปฌ ์ ์ฅ์์ ์ฐ๊ฒฐํด๋ณด๊ฒ ์ต๋๋ค.
๋ก์ปฌ ์ ์ฅ์์ ์๊ฒฉ ์ ์ฅ์๋ฅผ ์ถ๊ฐํฉ๋๋ค.
$ git remote ๋๋ $ git remote add origin ์๊ฒฉ ์ ์ฅ์ ์ฃผ์
์ ์ฅ์ ์ฐ๊ฒฐ ์กฐํ
$ git remote -v
์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํ ์ ์๊ฒ ๋์์ต๋๋ค.
'Git & Github' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐Git bash - Part 3 : Fast-foward merge์ 3-way merge (0) | 2022.03.31 |
---|---|
๐Git bash - Part 2 : Git ์์ฃผ ์ฐ์ด๋ ๋ช ๋ น์ด์ ์ค๋ช (0) | 2022.03.28 |