1. Git์ด๋?2. Git ์ค์นํ๊ธฐ2-1. Ubuntu์์ ์ค์นํ๊ธฐ2-2. Mac ์ค์นํ๊ธฐ2-3. Windows ์ค์นํ๊ธฐ3. ๋ฒ์ ํ์ธ ๋ฐ ์ด๊ธฐ ์ค์ 4. ์ ์ฅ์ ๋ง๋ค๊ธฐ5. ์์ ํ๊ณ ์ ์ฅ์์ ์ ์ฅํ๊ธฐ
1. Git์ด๋?
- Git์ ์์ค์ฝ๋ ๋ฐ ํ์ผ์ ๋ณ๊ฒฝ๋ด์ญ์ ์ ์ฅํ๋ ๋ถ์ฐ๋ฒ์ ๊ด๋ฆฌ์์คํ ์ ๋๋ค.
- ๋ฆฌ๋์ค ํ ๋ฐ์ฆ์ ์ํด ์ฒ์ ๋ง๋ค์ด์ก์ต๋๋ค.
- Github, Bitbucket, Gitlab ๋ฑ์ Git๊ธฐ๋ฐ์ ๋ฒ์ ๊ด๋ฆฌํธ์คํ ์๋น์ค๋ค์ด ์์ต๋๋ค.
- ์ถ์ฒ์์ : ProGit https://git-scm.com/book/ko/v2
ย
2. Git ์ค์นํ๊ธฐ
2-1. Ubuntu์์ ์ค์นํ๊ธฐ
๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ์ฌ Git์ ์ค์นํ ์ ์์ต๋๋ค.
$ sudo apt-get update $ sudo apt-get install git
ย
2-2. Mac ์ค์นํ๊ธฐ
Mac์๋ ๊ธฐ๋ณธ์ ์ผ๋ก Git์ด ์ค์น๋์ด ์์ต๋๋ค. ์ค์น๋์๋์ง ํ์ธํ๊ธฐ ์ํด์๋ ํฐ๋ฏธ๋ ์ฐฝ์ ์๋์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํฉ๋๋ค.
$ git usage: git [--version] [--help] [-C <path>] [-c <name>=<value>] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path] ...
ย
์ค์น๊ฐ ๋์ง ์์ ๊ฒฝ์ฐ, ์๋์ ์์๋๋ก ์งํํฉ๋๋ค.
- https://git-scm.com/ ์ ์ํฉ๋๋ค.
- Download for Mac ๋ฒํผ ํด๋ฆญํฉ๋๋ค.
- ๋ค์ด ๋ฐ์ ํ์ผ ์คํํฉ๋๋ค.
ย
2-3. Windows ์ค์นํ๊ธฐ
- https://git-scm.com/ ์ ์ํฉ๋๋ค.
- Download for Windows ๋ฒํผ ํด๋ฆญํฉ๋๋ค.
- ๋ค์ด ๋ฐ์ ํ์ผ ์คํํฉ๋๋ค.
ย
3. ๋ฒ์ ํ์ธ ๋ฐ ์ด๊ธฐ ์ค์
๋ค์ด๋ฐ์ Git ๋ฒ์ ์ ํ์ธํ ์ ์์ต๋๋ค.
$ git --version git version 2.19.1
ย
Git์ ์ฌ์ฉํ๊ธฐ ์ํด ์ฌ์ฉ์ ์ ๋ณด ์ค์ ์ ํฉ๋๋ค.
$ git config --global user.name "hojun.lee" $ git config --global user.email email@example.com
ย
4. ์ ์ฅ์ ๋ง๋ค๊ธฐ
- ์์ ํ ๋๋ ํ ๋ฆฌ ๋ง๋ค๊ณ (mkdir) ์ด๋ํ๊ธฐ(cd)
$ mkdir git-test $ cd git-test
ย
- ํ์ฌ ๋๋ ํ ๋ฆฌ๋ฅผ Git ์ ์ฅ์๋ก ๋ง๋ค์ด ์ํ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํฉ๋๋ค.
$ cd git-test $ git init
ย
git init์ ์
๋ ฅํ๋ฉด ํด๋น ํด๋ ๊ธฐ์ค์ผ๋ก .git(๋ก์ปฌ ์ ์ฅ์)๊ฐ ์์ฑ๋ฉ๋๋ค. ๋ก์ปฌ ์ ์ฅ์์๋ ๋ฒ์ ์ ๋ณด, ์๊ฒฉ ์ ์ฅ์ ์ฃผ์๊ฐ ์ ์ฅ๋ฉ๋๋ค.

์ด๋, ํ ํด๋์๋ ํ๋์ .git(๋ก์ปฌ ์ ์ฅ์)๋ฅผ ๊ฐ์ ธ์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์ถฉ๋์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
ย
- ์ ์ฅ์์ ํ์ผ์ ์ถ๊ฐ(touch)ํ๊ณ ์ปค๋ฐํ๊ธฐ
$ touch README $ git add README $ git commit -m "first commit"
ย
5. ์์ ํ๊ณ ์ ์ฅ์์ ์ ์ฅํ๊ธฐ
- ํ์ผ ์ํ ํ์ธํ๊ธฐ
$ git status

ย
- git์ด ๊ด๋ฆฌํ ๋์์ผ๋ก ํ์ผ ๋ฑ๋ก
๋ณ๊ฒฝํ ํ์ผ ์ค ์ฌ๋ฆฌ๊ธฐ ์ํ๋ ๊ฒ๋ง ์ ํํฉ๋๋ค. ์ ์ฒด ์ฌ๋ฆฌ๊ณ ์ถ์ผ์ ๊ฒฝ์ฐ์๋ ์ (.)์ ์
๋ ฅํฉ๋๋ค.
$ git add README
ย

ย
- ๋ฒ์ ๋ง๋ค๊ธฐ(commit)
$ git commit -m "์ ์ฅ๋ฉ์ธ์ง๋ฅผ ์ ๋ ฅํด์ฃผ์ธ์"
ย

ย
- ํ์ผ ๋ฌด์ํ๊ธฐ - gitignore
.gitignoreํ์ผ์ ๋ฒ์ ๊ด๋ฆฌ์์ ์ ์ธํ ํ์ผ์ ์ถ๊ฐํ๋ค.
# a comment - ์ด ์ค์ ๋ฌด์ํ๋ค. # ํ์ฅ์๊ฐ .a์ธ ํ์ผ ๋ฌด์ *.a # ์ ์ค์์ ํ์ฅ์๊ฐ .a์ธ ํ์ผ์ ๋ฌด์ํ๊ฒ ํ์ง๋ง lib.a๋ ๋ฌด์ํ์ง ์๋๋ค. !lib.a # ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ ์๋ TODOํ์ผ์ ๋ฌด์ํ๊ณ subdir/TODO์ฒ๋ผ ํ์๋๋ ํ ๋ฆฌ์ ์๋ ํ์ผ์ ๋ฌด์ํ์ง ์๋๋ค. /TODO # build/ ๋๋ ํ ๋ฆฌ์ ์๋ ๋ชจ๋ ํ์ผ์ ๋ฌด์ํ๋ค. build/ # `doc/notes.txt`๊ฐ์ ํ์ผ์ ๋ฌด์ํ๊ณ doc/server/arch.txt๊ฐ์ ํ์ผ์ ๋ฌด์ํ์ง ์๋๋ค. doc/*.txt # `doc` ๋๋ ํ ๋ฆฌ ์๋์ ๋ชจ๋ .txt ํ์ผ์ ๋ฌด์ํ๋ค. doc/**/*.txt
ย
- ๋ณ๊ฒฝ์ฌํญ ํ์ธํ๊ธฐ
์ต๊ทผ commit ๋ด์ฉ๊ณผ ํ์ฌ ํด๋์ ๋ด์ฉ์ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํ ์ ์์ต๋๋ค.
$ git diff

ย
- ์ปค๋ฐ ํ์คํ ๋ฆฌ ์กฐํํ๊ธฐ
$ git log

ย