์ด ์ฑ ์์ Git ๋ช ๋ น์ด๋ฅผ ๋ง์ด ์ค๋ช ํ์ง๋ง, Git์ ์ค๋ช ํ๊ธฐ ์ํด์ ์ค๊ฐ๋ง๋ค ์ค๋ช ํ๋ ๊ฒ๋ฟ์ด๋ค. ์ค๋ช ์ ๋ฐฉํดํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ช ๋ น์ด ์ค์ฌ์ผ๋ก ์ดํด๋ณด์ง ์๋๋ค. ์ด ์ฅ์์๋ ์ฌ๊ธฐ์ ๊ธฐ ํฉ์ด์ ธ ์๋ ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ํ๋์ ๋ณผ ์ ์๋๋ก ์ ๋ฆฌํ๋ค.
์ฑ ์ ์ฒด์์ ์ธ๊ธํ๋ Git ๋ช ๋ น์ด๋ฅผ ์ ๋ถ ์ดํด๋ณด๋๋ฐ ๋ช ๋ น์ด๋ฅผ ์ฉ๋์ ๋ฐ๋ผ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด ๋์๋ค. ํด๋น ๋ช ๋ น์ด๋ฅผ ์ด๋์ ์ฐ๋์ง ์ค๋ช ํ๊ณ ์ด๋์์ ์ฐพ์๋ณผ ์ ์๋์ง๋ ํ๊ธฐํ๋ค.
์ ๋ง ๋ง์ด ์ฌ์ฉํ๋ ๋ช
๋ น์ด๊ฐ ๋ ๊ฐ ์๋ค. ๋ฐ๋ก config
์ help
๋ช
๋ น์ด๋ค. ์ด ๋ช
๋ น์ ๋งค์ผ ์ฌ์ฉํ๋ค.
Git์๋ ์ค์ ํ ์ ์๋ ๊ฐ์ด ์๋ฐฑ ๊ฐ์ง์ ๋ฌํ๋ค. ์ฌ์ฉ์์ ์ทจํฅ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋์ํ๋๋ก ์ค์ ํ ์ ์๋ค. ์ด ๋ช ๋ น์ผ๋ก ์ฌ์ฉ์์ด๋ฆ์ด๋ ํฐ๋ฏธ๋ ์๊น, ํธ์ง๊ธฐ ๋ฑ์ ์ค์ ํ๋ค. ์ ์ฅ์๋ง๋ค ๋ค๋ฅด๊ฒ ํน์ ๊ธ๋ก๋ฒํ๊ฒ ์ค์ ํ ์ ์๋๋ฐ ๊ฐ๊ฐ ์ค์ ํ์ผ์ด ๋ค๋ฅด๋ค.
git config
๋ช
๋ น์ ์ด ์ฑ
์ ๋ชจ๋ ์ฅ์์ ์ฌ์ฉํ๋ค.
Git์ ์ฒ์ ์ฌ์ฉํ ๋ ์ด๋ฆ, ์ด๋ฉ์ผ ์ฃผ์, ํธ์ง๊ธฐ๋ ์ด๋ป๊ฒ ์ค์ ํ๋์ง๋ ch01-getting-started.asc์์ ์ค๋ช ํ๋ค.
์ด๋ป๊ฒ ๋จ์ถ ๋ช ๋ น์ด๋ฅผ ๋ง๋๋์ง๋ ch02-git-basics-chapter.asc์ ์๋ค. ๋งค๋ฒ ๊ธด ์ต์ ์ ์ค์ค ์ ๋ ฅํ์ง ์์๋ ๋๋ค.
git pull
๋ช
๋ น์ ์คํํ ๋ --rebase
์ต์
์ผ๋ก ๋์ํ๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ch03-git-branching.asc์ ์๋ค.
HTTP ์ํธ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ch07-git-tools.asc๋ฅผ ๋ณด๋ฉด ๋๋ค.
Git์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ ๊บผ๋ผ ๋ ์ฌ์ฉํ๋ Smudge์ Clean ํํฐ๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ch08-customizing-git.asc์ ์๋ค.
๋ง์ง๋ง์ผ๋ก git config
๋ช
๋ น ์์ฒด์ ๋ํ ์ค๋ช
์ ch08-customizing-git.asc์ ์๋ค.
git help
๋ช
๋ น์ Git์ ํฌํจ๋ ๋ฌธ์๋ฅผ ๋ณด์ฌ์ค๋ค.
์ด ์ฅ์์๋ ๋ง์ด ์ฌ์ฉํ๋ ๊ฒ๋ง ๊ฐ๋จํ ์ค๋ช
ํ๋ค. git help <command>
๋ผ๊ณ ์คํํ๋ฉด ํด๋น ๋ช
๋ น์ด์ ์ด๋ค ์ต์
์ด ์๊ณ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์๋ ค์ค๋ค.
git help
๋ช
๋ น์ ch01-getting-started.asc์ ์๊ฐํ๋ค. git shell
์ ์๋ฒ์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ch04-git-on-the-server.asc์์ ๋ณด์ฌ์ค๋ค.
Git ์ ์ฅ์๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋ง๋ ๋ค. ๋คํธ์ํฌ ์ด๋๊ฐ์ ์๋ ์ ์ฅ์๋ฅผ ๋ณต์ฌํด์ค๊ฑฐ๋ ๊ธฐ์กด ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์์ ์ ์ฅ์๋ฅผ ์๋ก ์์ฑํ ์ ์๋ค.
ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๋ก ๊ฐ์ git init
์ด๋ผ๊ณ ์คํํ๋ค. ๋๋ ํ ๋ฆฌ์ Git ์ ์ฅ์๊ฐ ์๋ก ๋ง๋ค์ด์ง๊ณ ํ๋ก์ ํธ๋ฅผ ๋ฒ์ ๊ด๋ฆฌํ ์ ์๋ค.
ch02-git-basics-chapter.asc์์ ๋ก์ปฌ์ ์ ์ฅ์๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ค.
โmasterโ ์์ ๋ค๋ฅธ ๋ธ๋์น๋ก ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ ch03-git-branching.asc์ ์๊ฐํ๋ค.
ch04-git-on-the-server.asc๋ฅผ ๋ณด๋ฉด Bare ์ ์ฅ์๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ด ๋์ ์๋ค.
๋ง์ง๋ง์ผ๋ก git init
๋ช
๋ น์ ์คํํ๋ฉด ๋ด๋ถ์์ ์ด๋ค ์ผ์ด ์ผ์ด๋๋ ์ง ch10-git-internals.asc์์ ์ค๋ช
ํ๋ค.
git clone
์ ์ฌ์ค ๋ค๋ฅธ ๋ช
๋ น์ด๋ฅผ ๋ช ๊ฐ ์คํํ๋ค.
๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ๋๋ ํ ๋ฆฌ๋ก ๋ค์ด๊ฐ๊ณ ๋์ git init
๋ช
๋ น์ผ๋ก ๋น Git ์ ์ฅ์๋ฅผ ๋ง๋ ๋ค. ๊ทธ๋ค์ ์
๋ ฅํ URL์ origin
์ด๋ผ๋(๊ธฐ๋ณธ๊ฐ) ์ด๋ฆ์ ๋ฆฌ๋ชจํธ๋ก ์ถ๊ฐํ๊ณ (git remote add
) git fetch
๋ช
๋ น์ผ๋ก ๋ฆฌ๋ชจํธ ์ ์ฅ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค. ๋ง์ง๋ง์ผ๋ก ์ต์ข
์ปค๋ฐ์ ์ํน ๋๋ ํ ๋ฆฌ์ Checkout ํ๋ค(git checkout
).
git clone
๋ช
๋ น์ ์ด ์ฑ
์ด๋์์๋ ๋ณผ ์ ์๋ ๋ช
๋ น์ด์ง๋ง ๊ฐ์ฅ ์ค๋ช
์ด ์๋ ๋ช ๊ณณ์ ์๊ฐํ๋ค.
์ด ๋ช ๋ น์ ch02-git-basics-chapter.asc์์ ์ค๋ช ํ๊ณ ๋ฐ๋ก ๋ฐ๋ผ ํ ์ ์๋ ์์ ๋ ๋ณด์ฌ์ค๋ค.
--bare
์ต์
์ ์ฃผ๊ณ ์ํน ๋๋ ํ ๋ฆฌ ์๋ Git ์ ์ฅ์๋ฅผ ๋ณต์ฌํ๋ ๋ฐฉ๋ฒ์ ch04-git-on-the-server.asc์์ ๋ค๋ฃฌ๋ค.
Bundle ํ์ผ๋ก ๋ Git ์ ์ฅ์๋ฅผ ๋ค์ ํ ์๋ ์๋๋ฐ ch07-git-tools.asc์์ ์๊ฐํ๋ค.
๋ง์ง๋ง์ผ๋ก --recursive
์ต์
์ผ๋ก Clone ํ ๋ ์๋ธ๋ชจ๋๊น์ง Clone ํ๋ ๋ฐฉ๋ฒ์ ch07-git-tools.asc์์ ์ค๋ช
ํ๋ค.
์ด ๋ช ๋ น์ ์ฌ๊ธฐ์ ์ ๋ฆฌํ ๋ถ๋ถ ์ด์ธ์์๋ ๋ง์ ๊ณณ์์ ์ฌ์ฉํ์ง๋ง, ์ฐจ๊ทผ์ฐจ๊ทผ ์ ์ค๋ช ํ ๊ณณ์ผ๋ก ์ ๋ฆฌํ๋ค.
Stage ํ๊ณ ์ปค๋ฐํ๋ ์ ๋์ ์์ฃผ ๊ธฐ๋ณธ์ ์ธ ์ํฌํ๋ก๋ ๋ช ๋ น์ด ๋ช ๊ฐ๋ง ์๋ฉด ๋๋ค.
git add
๋ช
๋ น์ ์ํน ๋๋ ํ ๋ฆฌ์์ Staging Area(โindexโ)๋ก ์ปจํ
ํธ๋ฅผ ์ถ๊ฐํ๋ ๋ช
๋ น์ด๋ค.
git commit
๋ช
๋ น์ ์ค๋ก์ง Staging Area๋ง ๋ฐ๋ผ๋ณด๊ธฐ ๋๋ฌธ์ git add
๋ช
๋ น์ผ๋ก ์ปค๋ฐํ ์ค๋
์ท์ ์ ๋ค๋ฌ์ด์ผ ํ๋ค.
์ด ๋ช ๋ น์ ๋งค์ฐ ์ค์ํ ๋ช ๋ น์ด๋ผ์ ์ด ์ฑ ์์ ์์ญ ๋ฒ๋ ๋ ์ธ๊ธํ๋ค. ์ฌ๊ธฐ์ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์ ์ค๋ช ํ ๊ณณ์ ์ฐพ์๋ณด์.
git add
๋ ch02-git-basics-chapter.asc์์ ์์ธํ ์ค๋ช
ํ๋ค.
์ด ๋ช ๋ น๋ ์ถฉ๋ ์์๋ ํ์ํ๋ค. ch03-git-branching.asc์์ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์ค๋ช ํ๋ค.
ch07-git-tools.asc์์ ์์ ํ ํ์ผ ์ผ๋ถ๋ถ์ ๋ํํ์ผ๋ก Stage ํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋ค.
๋ง์ง๋ง์ผ๋ก ์ด ๋ช ๋ น์ด ๋ด๋ถ์ ์ผ๋ก ์ด๋ป๊ฒ ๋์ํ๋์ง ์ดํดํ ์ ์๋๋ก ch10-git-internals.asc์์ ์ ์์ค ๋ช ๋ น์ด๋ก ๋ฐ๋ผ ํ๋ ์๋ฅผ ๋ณด์ฌ์ค๋ค.
git status
๋ช
๋ น์ ์ํน ๋๋ ํ ๋ฆฌ์ Staging Aread์ ์ํ๋ฅผ ๋ณด์ฌ์ค๋ค.
Modified ์ํ์ด๊ฑฐ๋ Unstaged ์ํ์ธ ํ์ผ์ด ๋ฌด์์ธ์ง Staged ์ํ์ด์ง๋ง ์์ง ์ปค๋ฐํ์ง ์์ ํ์ผ์ ๋ฌด์์ธ์ง ๋ณด์ฌ์ค๋ค.
Staging Area์ ํ์ผ์ ๋ฃ๊ณ ๊บผ๋ด๋ ๋ฐฉ๋ฒ์ ๋ํ ํํธ๋ ๋ณด์ฌ์ค๋ค.
git status
๋ช
๋ น์ ch02-git-basics-chapter.asc์์ ๊ฐ๊ฒฐํ๊ฒ ์ค๋ช
ํ๋ค.
์ด ๋ช
๋ น์ ์ด ์ฑ
์์ ์์ฃผ ๋ง์ด ์ฌ์ฉํ์ง๋ง ์ฌ๊ธฐ ์ค๋ช
์ ๋ฒ์ด๋์ง ์๋๋ค.
git diff
๋ช
๋ น์ ๋ ํธ๋ฆฌ ๊ฐ์ฒด์ ์ฐจ์ด๋ฅผ ๋ณด๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค. ์ํน ๋๋ ํ ๋ฆฌ์ Staging Area๋ฅผ ๋น๊ตํ ์ ์๊ณ (git diff
) Staing Area์ ๋ง์ง๋ง ์ปค๋ฐ์ ๋น๊ตํ ์ ์๋ค(git diff --staged
). ๊ทธ๋ฆฌ๊ณ ๋ ์ปค๋ฐ์ ๋น๊ตํ ์ ์๋ค(git diff master branchB
).
git diff
๋ ch02-git-basics-chapter.asc์์ ์ฒ์ ์ค๋ช
ํ๋ค. Staged ์ํ์ธ ๋ด์ฉ์ด ๋ฌด์์ด๊ณ ๋ฐ๋ ์ํ์ธ ๋ด์ฉ์ ๋ฌด์์ธ์ง ๋น๊ตํ๋ ๋ฒ์ ์ค๋ช
ํ๋ค.
ch05-distributed-git.asc์์ --check
์ต์
์ผ๋ก ๊ณต๋ฐฑ๋ฌธ์๊ฐ ์๋ชป ์
๋ ฅ๋์ง ์์๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๋ค.
ch05-distributed-git.asc์์ ๋ ๋ธ๋์น๋ฅผ ํจ์จ์ ์ผ๋ก ๋น๊ตํ ์ ์๋ git diff AโฆโB
๋ฌธ๋ฒ์ ์ค๋ช
ํ๋ค.
ch07-git-tools.asc์ ๋ณด๋ฉด -b
์ต์
์ผ๋ก ๊ณต๋ฐฑ๋ฌธ์๋ ๋ฌด์ํ๊ณ ๋น๊ตํ๋ ๊ฒ๊ณผ --theirs
, --ours
, --base
์ต์
์ผ๋ก ์ถฉ๋ ๋ ํ์ผ์ ์ํ๋ฅผ ๋น๊ตํ๋ ๋ฐฉ๋ฒ์ด ๋์ ์๋ค.
๋ง์ง๋ง์ผ๋ก ch07-git-tools.asc์์ ์๋ธ๋ชจ๋์ ๋ณ๊ฒฝ ๋ด์ฉ์ ๋น๊ตํ๋ --submodule
์ต์
๋ ์ค๋ช
ํ๋ค.
git difftool
๋ช
๋ น์ ๋จ์ํ ์ธ๋ถ diff ๋๊ตฌ๋ฅผ ์คํํด์ค๋ค. git diff
๋ Git์ ๋ค์ด ์๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ด๊ณ ์ธ๋ถ diff ๋๊ตฌ๋ก ๋ ํธ๋ฆฌ๋ฅผ ๋น๊ตํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
์ด ๋ช ๋ น์ ch02-git-basics-chapter.asc์์ ์ค๋ช ํ๋ค.
git commit
๋ช
๋ น์ git add
๋ก Staging Area์ ๋ฃ์ ๋ชจ๋ ํ์ผ์ ์ปค๋ฐํ๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ํ๋์ ์ค๋
์ท์ผ๋ก ๊ธฐ๋ก๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ ๋ธ๋์น๊ฐ ์ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๊ฒ ํ๋ค.
์ปค๋ฐ์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ๋ด์ฉ์ ch02-git-basics-chapter.asc์์ ๋ค๋ฃฌ๋ค.
-a
ํ๋๊ทธ๋ฅผ ์ฃผ๊ณ git add
๋ฅผ ๊ฑด๋๋ฐ๊ณ ๋ฐ๋ก ์ปค๋ฐํ๋ ๊ฒ๊ณผ -m
์ผ๋ก ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋๊ธฐ๋ ๋ฐฉ๋ฒ๋ ๋ณด์ฌ์ค๋ค.
๊ฐ์ฅ ์ต๊ทผ ์ปค๋ฐ์ ์์ ํ๋ --amend
์ต์
์ ch02-git-basics-chapter.asc์์ ์ค๋ช
ํ๋ค.
ch03-git-branching.asc์ ๋ณด๋ฉด git commit
์ด ๋ฌด์์ ํ๋์ง ์ ๊ทธ๋ ๊ฒ ํ๋์ง ์ค๋ช
ํ๋ค.
-S
ํ๋๊ทธ๋ก ์ปค๋ฐ์ ์๋ช
ํ๋ ๋ฐฉ๋ฒ์ ch07-git-tools.asc์์ ์ค๋ช
ํ๋ค.
๋ง์ง๋ง์ผ๋ก ch10-git-internals.asc์์ git commit
๋ช
๋ น์ด ๋ด๋ถ์ ์ผ๋ก ํ๋ ์ผ์ด ๋ฌด์์ด๊ณ ์ค์ ๋ก ์ด๋ป๊ฒ ๊ตฌํ๋ผ ์๋์ง ์ค๋ช
ํ๋ค.
git reset
๋ช
๋ น์ ๋๋๋ฆฌ๋(Undo) ๋ช
๋ น์ด๋ค. ๋จ์ด๊ฐ ์๋ฏธํ๋ ๊ทธ๋๋ก๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
HEAD
ํฌ์ธํฐ๋ฅผ ์ฎ๊ธฐ๋ ๊ฒ๊ณผ ๊ด๋ จ๋ผ ์๊ณ Staging Area(index
)๋ฅผ ๋๋๋ฆด ์ ์๊ณ --hard
์ต์
์ ์ฃผ๋ฉด ์ํน ๋๋ ํ ๋ฆฌ๋ ๋๋๋ฆฐ๋ค.
--hard
์ต์
์ ์๋ชป ์ฌ์ฉํ๋ฉด ์์
๋ฌผ์ ์์ด๋ฒ๋ฆด ์๋ ์๊ธฐ ๋๋ฌธ์ ์ด ๋ช
๋ น์ ์ ์ดํดํ๊ณ ์์ด์ผ ํ๋ค.
git reset
์ ๋ฌด์๋ณด๋ค๋ git add
๋ก ์ถ๊ฐํ ํ์ผ์ Unstage ํ๋๋ฐ ์ฌ์ฉํ๋ค. ch02-git-basics-chapter.asc์์ ์ค๋ช
ํ๋ค.
ch07-git-tools.asc์์ ์ด ๋ช ๋ น์ ์ ์ฒด์ ์ผ๋ก ์์ธํ ์ค๋ช ํ๋ค.
git reset --hard
๋ช
๋ น์ผ๋ก ์ถฉ๋ ์ Merge๋ฅผ ์ทจ์ํ ์ ์๋ค. git merge --abort
๋ก๋ ๊ฐ์ ์ผ์ ํ ์ ์๋๋ฐ ์ด ๋ช
๋ น์ git reset
๋ช
๋ น์ด์ Wrapper๋ค. ์ด ๋ด์ฉ์ ch07-git-tools.asc์์ ์ค๋ช
ํ๋ค.
git rm
๋ช
๋ น์ Staging Area๋ ์ํน ๋๋ ํ ๋ฆฌ์ ์๋ ํ์ผ์ ์ญ์ ํ๋ ๋ฐ ์ฌ์ฉํ๋ค.
git add
๋ช
๋ น๊ณผ ๋น์ทํ๊ฒ ํ์ผ์ ์ญ์ ๋ฅผ Stage ํ๋ ๊ธฐ๋ฅ์ด๋ค.
ch02-git-basics-chapter.asc์์ git rm
๋ช
๋ น์ ์์ธํ ์ค๋ช
ํ๋ค. Staging Area์ ์ํน ๋๋ ํ ๋ฆฌ ๋ชจ๋์์ ํ์ผ์ ์ญ์ ํ๋ ๋ฐฉ๋ฒ๊ณผ --cached
์ต์
์ ์ฃผ๊ณ Staging Area์ ์๋ ํ์ผ๋ง ์ง์ฐ๊ณ ์ํน ๋๋ ํ ๋ฆฌ์ ํ์ผ์ ๋จ๊ฒจ๋๋ ๋ฐฉ๋ฒ๋ ์ค๋ช
ํ๋ค.
๋๋ถ๋ถ์ ch10-git-internals.asc์์ ์ค๋ช
ํ ๋๋ก ์ฐ์ง๋ง, ์ด ์ฑ
์์๋ ๋ค๋ฅด๊ฒ ์ฌ์ฉํ ์๋ ์๋ค. git filter-branch
๋ช
๋ น์ ์คํํ ๋ git rm
๋ช
๋ น์ --ignore-unmatch
์ต์
์ ์ฃผ๊ณ ์ฌ์ฉํ๋ค. ์ด ์ต์
์ ์ญ์ ํ๋ ค๋ ํ์ผ์ด ์์ ๋ ์๋ฌ๊ฐ ๋์ง ์๊ฒ ํด์ค๋ค.
์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ ๋๋ ์ ์ฉํ๋ค.
git mv
๋ช
๋ น์ ํ์ผ์ ์ฎ๊ธฐ๊ณ (์ด๋ฆ์ ๋ณ๊ฒฝํ๊ณ ) ๋์ ์ ํ์ผ์ git add
๋ช
๋ น์ ์คํํ๊ณ ์ด์ ํ์ผ์๋ git rm
์ ์คํ์์ผ์ฃผ๋ ๋ช
๋ น์ด๋ค.
์ด ๋ช ๋ น์ ch02-git-basics-chapter.asc์์ ๋ค๋ฃฌ๋ค.
git clean
๋ช
๋ น์ ์ํน ๋๋ ํ ๋ฆฌ์์ ํ์์๋ ํ์ผ์ ์ญ์ ํ๋ ๋ช
๋ น์ด๋ค.
์ด ๋ช
๋ น์ผ๋ก ์ถฉ๋๋ก ์๊ธด ํ์ผ์ด๋ ๋น๋ ์ํฐํฉํธ ํ์ผ์ ์ญ์ ํ ๋ ํธ๋ฆฌํ๋ค.
์ด ๋ช ๋ น์ ์ฌ์ฉํ๋ ์ํฉ๊ณผ ํ์ํ ์ต์ ์ ch07-git-tools.asc์์ ๋ค๋ฃฌ๋ค.
์ฌ๊ธฐ์ ์๊ฐํ๋ ๋ช ๋ น์ด๋ง ์๋ฉด Branch๋ฅผ ์ฌ์ฉํ๊ณ Merge ํ๋ ์ผ์ ๋ฅํ ํ ์ ์๋ค.
git branch
๋ช
๋ น์ ๋ธ๋์น๋ฅผ ๊ด๋ฆฌํ๋ ๋๊ตฌ๋ค.
์ด ๋ช
๋ น์ ๋ธ๋์น๋ฅผ ๋ชจ๋ ๋ณด์ฌ์ฃผ๊ณ ๋ธ๋์น๋ฅผ ์๋ก ๋ง๋ค๊ณ ๋ธ๋์น๋ฅผ ์ญ์ ํ๊ณ ๋ธ๋์น ์ด๋ฆ์ ๋ณ๊ฒฝํ๋ค.
ch03-git-branching.asc์์ branch
๋ช
๋ น์ ์ค๋ช
ํ๋๋ฐ ์ด ๋ช
๋ น์ ํ ์ฅ์ ๊ฑธ์ณ์ ์ค๋ช
ํ๋ค.
๋ธ๋์น๋ฅผ ๋ง๋๋ ๊ฒ์ ch03-git-branching.asc์์ ์ค๋ช
ํ๊ณ ๋ธ๋์น๋ฅผ ๋ณด์ฌ์ฃผ๊ฑฐ๋ ์ญ์ ํ๋ ๊ธฐ๋ฅ์ ch03-git-branching.asc์์ ์ค๋ช
ํ๋ค.
git branch -u
๋ช
๋ น์ผ๋ก ํธ๋ํน ๋ธ๋์น๋ฅผ ๋ง๋๋ ๊ฒ์ ch03-git-branching.asc์์ ๋ณด์ฌ์ค๋ค.
๋ด๋ถ์ ์ผ๋ก ์ด๋ค ์ผ์ด ๋ฒ์ด์ง๋์ง๋ ch10-git-internals.asc์์ ์ค๋ช ํ๋ค.
git checkout
๋ช
๋ น์ ๋ธ๋์น๋ฅผ ๋ณ๊ฒฝํ๊ณ ํด๋น ํ์ผ์ ์ํน ๋๋ ํ ๋ฆฌ๋ก ๋ณต์ฌํ๋ค.
ch03-git-branching.asc์์ git branch
๋ช
๋ น์ ์ค๋ช
ํ๋ฉด์ ์ด ๋ช
๋ น๋ ์ค๋ช
ํ๋ค.
ch03-git-branching.asc์์ --track
์ต์
์ ์ฃผ๊ณ ํธ๋ํน ๋ธ๋์น๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํ๋ค.
ch07-git-tools.asc๋ฅผ ํตํด ์ด ๋ช
๋ น์ --conflict=diff3
์ ์ฃผ๋ฉด ์ถฉ๋ ํ์๋ ํ์ผ์ ์ฌํํ ์ ์๋ค.
git reset
๋ช
๋ น๊ณผ ๊ด๋ จ๋ ๋ด์ฉ์ ch07-git-tools.asc์์ ์ค๋ช
ํ๋ค.
๋ง์ง๋ง์ผ๋ก git checkout
์ด ์ด๋ป๊ฒ ๊ตฌํ๋๋์ง๋ ch10-git-internals.asc๋ฅผ ์ฐธ๊ณ ํ๋ค.
git merge
๋ ๋ค๋ฅธ ๋ธ๋์น๋ฅผ ํ์ฌ Checkout๋ ๋ธ๋์น์ Merge ํ๋ ๋ช
๋ น์ด๋ค.
Merge ํ๊ณ ๋์ ํ์ฌ ๋ธ๋์น๊ฐ Merge ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ์ฎ๊ธด๋ค.
git merge
๋ช
๋ น์ ch03-git-branching.asc์์ ์ค๋ช
ํ๋ค.
์ด ์ฑ
์ ์ฌ๋ฌ ๊ณณ์์ merge
๋ช
๋ น์ ์ฌ์ฉํ์ง๋ง ch03-git-branching.asc์์ ์ค๋ช
ํ ๊ฒ์์ ํฌ๊ฒ ๋ฒ์ด๋์ง ์๋๋ค. git merge <branch>
๋ช
๋ น์ ์คํํ๋ฉด ํด๋น ๋ธ๋์น๊ฐ Merge ๋๋ค.
ch05-distributed-git.asc์ ๋ ๋ถ๋ถ์์ Squash ํด์ Merge ํ๋ ๋ฐฉ๋ฒ๋ ์ค๋ช ํ๋ค. Merge ํ๋ ๋ธ๋์น์ ํ์คํ ๋ฆฌ๋ ๋ฌด์ํ๊ณ ์ ์ปค๋ฐ์ ํ๋ ๋ง๋ค์ด Merge ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
ch07-git-tools.asc์์๋ -Xignore-space-change
์ต์
์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ --abort
ํ๋๊ทธ๋ก Merge๋ฅผ ์ค๋จํ๋ ๋ฐฉ๋ฒ ๋ฑ์ ์ค๋ช
ํ๋ค.
Merge ํ๊ธฐ ์ ์ ์๋ช ์ ๊ฒ์ฌํ๋ ๋ฐฉ๋ฒ๋ ์ค๋ช ํ๋ค. GPG ์๋ช ์ ch07-git-tools.asc์์ ์ค๋ช ํ๋ค.
๋ง์ง๋ง์ผ๋ก Subtree๋ฅผ Merge ํ๋ ๊ฒ์ ch07-git-tools.asc์์ ๋ฐฐ์ด๋ค.
git mergetool
๋ช
๋ น์ ์ธ๋ถ Merge Helper๋ฅผ ์คํํด ์ค๋ค. Merge ํ๋ค๊ฐ ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ์ฌ์ฉํ๋ค.
ch03-git-branching.asc์์ ์ด์ง ๋ง์ ๋ณด์ฌ์ฃผ๊ณ ch08-customizing-git.asc์์ ์์ ์ ์ธ๋ถ Merge ๋๊ตฌ๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ค.
git log
๋ช
๋ น์ ํ๋ก์ ํธ ํ์คํ ๋ฆฌ๋ฅผ ์๊ฐ์ ์ญ์์ผ๋ก ๋ณด์ฌ์ค๋ค.
๋๊ฒจ์ค Ref๋ฅผ ๋ฐ๋ผ ํ์คํ ๋ฆฌ๋ฅผ ๋ณด์ฌ์ฃผ๋๋ฐ Ref๋ฅผ ํ ๊ฐ๊ฐ ์๋๋ผ ์ฌ๋ฌ ๊ฐ ๋๊ธธ ์๋ ์๋ค. Ref๋ฅผ ๋๊ฒจ ์ฃผ์ง ์์ผ๋ฉด HEAD๊ฐ ๊ฐ๋ฆฌํค๋ ๋ธ๋์น์ ํ์คํ ๋ฆฌ๋ฅผ ๋ณด์ฌ์ค๋ค.
๋ ์ด ๋ช
๋ น์ผ๋ก ์ฌ๋ฌ ๋ธ๋์น๋ค ์ฌ์ด์ ์ฐจ์ด๋ฅผ ์ปค๋ฐ ๋จ์๋ก ๋ณผ ์ ์๋ค.
์ด ์ฑ ์์ ํ๋ก์ ํธ ํ์คํธ๋ฆฌ๋ฅผ ๋ณด์ฌ์ค ๋๋ง๋ค ์ด ๋ช ๋ น์ ์ฌ์ฉํ๋ค๊ณ ๋ด๋ ๋๋ค.
ch02-git-basics-chapter.asc์์ ์ด ๋ช
๋ น์ ๊น๊ฒ ๋ค๋ค๋ค.
-p
์ --stat
์ต์
์ ์ฃผ๋ฉด ๊ฐ ์ปค๋ฐ ์ฌ์ด์ ์๊ธด ๋ณํ๋ฅผ ํ์ธํ ์ ์๋ค. --pretty
์ --oneline
์ต์
์ ์ฃผ๋ฉด ํ์คํ ๋ฆฌ๋ฅผ ์ข ๋ ๊น๋ํ๊ฒ ๋ณผ ์ ์๋ค. ์ด ์ต์
์ Author๋ ๋ ์ง๋ฅผ ์ค์ฌ์ผ๋ก ํ์คํ ๋ฆฌ๋ฅผ ๋ณด์ฌ์ค๋ค.
ch03-git-branching.asc์ ๋ณด๋ฉด --decorate
์ต์
์ ์ฃผ๊ณ ํ์คํ ๋ฆฌ์ ๋ธ๋์น ํฌ์ธํฐ๊ฐ ํจ๊ป ๋ณด์ด๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด ๋์จ๋ค. --graph
์ต์
์ ์ถ๊ฐํ๋ฉด ํ์คํ ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ์งํ๋๋์ง๋ ๋ณผ ์ ์๋ค.
ch05-distributed-git.asc๊ณผ ch07-git-tools.asc์์ branchA..branchB
๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํ๋ค. branchB
์๋ง ์๊ณ branchA
์๋ ์๋ ์ปค๋ฐ๋ง ๊ฑธ๋ฌ์ ๋ณผ ์ ์๋ค.
ch07-git-tools.asc์์ ์ด ๋ฌธ๋ฒ์ ๋ค์ํ๊ฒ ์กฐํฉํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํ๋ค.
In ch07-git-tools.asc์ ch07-git-tools.asc์์ branchAโฆโbranchB
ํฌ๋งท์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํ๋ค. ์ด ๋ฌธ๋ฒ์ ๋ ์ค ํ์ชฝ์ ์ํ ์ปค๋ฐ๋ง ๋ณด์ฌ์ค๋ค. --left-right
์ต์
์ ์ฃผ๋ฉด ๊ฐ๊ฐ ์ด๋ ์ชฝ์ ์ํ ๊ฒ์ธ์ง๋ ๋ณด์ฌ์ค๋ค.
ch07-git-tools.asc์์๋ ์ถฉ๋์ ํด๊ฒฐํ ๋ ์ ์ฉํ --merge
์ต์
๋ ์ค๋ช
ํ๋ค. --cc
์ต์
์ ์ฌ์ฉํ๋ฉด ์ถฉ๋์ ํ์คํ ๋ฆฌ์ ๋ณด์ฌ์ค๋ค.
-g
์ต์
์ ์ฌ์ฉํ๋ฉด ๋ธ๋์น๋ฅผ ์ค๊ฐ ๊ธฐ๋ก์ธ Reflog๋ ํจ๊ป ๋ณด์ฌ์ค๋ค. ์ด๊ฒ์ ch07-git-tools.asc์์ ์ค๋ช
ํ๋ค.
ch07-git-tools.asc์์๋ -S
์ -L
์ต์
์ ์๊ฐํ๋ค. ์ด ์ต์
์ ์ฌ์ฉํ๋ฉด ํน์ ์ฝ๋์ ๋ํ ํ์คํ ๋ฆฌ๋ง ์ฐพ์๋ณผ ์ ์๋ค. ํน์ ํจ์์ ํ์คํ ๋ฆฌ๋ฅผ ๋ณด๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ฉด ์ ์ฉํ๋ค.
ch07-git-tools.asc์์ --show-signature
์ต์
์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํ๋ค. git log
๋ช
๋ น์ ์ด ์ต์
์ ์ฌ์ฉํ๋ฉด ์ปค๋ฐ์ ์๋ช
์ ๋ณด๊น์ง๋ ๋ณด์ฌ์ค๋ค.
git stash
๋ช
๋ น์ ์์ง ์ปค๋ฐํ์ง ์์ ์ผ์ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์์
์ค์ธ ์ํน ๋๋ ํ ๋ฆฌ๋ฅผ ์ ์ฅํ๋ค.
ch07-git-tools.asc์์ ์ค๋ช ํ๋ค.
git tag
๋ช
๋ น์ ํ์คํ ๋ฆฌ์์ ํน์ ๋ถ๋ถ์ ๋ถ๋งํฌํ๋ ๊ธฐ๋ฅ์ด๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ฐฐํฌํ ๋ ์ฌ์ฉํ๋ค.
์ด ๋ช ๋ น์ ch02-git-basics-chapter.asc์์ ์์ธํ ์ค๋ช ํ๊ณ ch05-distributed-git.asc์ ๋ณด๋ฉด ๊ตฌ์ฒด์ ์ธ ์ฌ๋ก๋ ๋ณด์ฌ์ค๋ค.
ํ๊ทธ์ GPG ์๋ช
์ ํ๋ ค๋ฉด -s
ํ๋๊ทธ๋ฅผ ์ฃผ๋ฉด ๋๊ณ -v
ํ๋๊ทธ๋ฅผ ์ฃผ๋ฉด ์๋ช
์ ๊ฒ์ฆํ ์ ์๋ค. ch07-git-tools.asc์์ ๋ค๋ฃฌ๋ค.
Git์๋ ๋คํธ์ํฌ๊ฐ ํ์ํ ๋ช ๋ น์ด๊ฐ ๋ง์ง ์๋ค. ๊ฑฐ์ ๋ก์ปฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ง์ผ๋ก ๋์ํ๋ค. ์ฝ๋๋ฅผ ๊ณต์ ํ๊ฑฐ๋ ๊ฐ์ ธ์ฌ ๋ ํ์ํ ๋ช ๋ น์ด๊ฐ ๋ช ๊ฐ ์๋ค. ์ด๋ฐ ๋ช ๋ น์ด๋ ๋ชจ๋ ๋ฆฌ๋ชจํธ ์ ์ฅ์๋ฅผ ๋ค๋ฃจ๋ ๋ช ๋ น์ด๋ค.
git fetch
๋ช
๋ น์ ๋ก์ปฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ ๊ฒ์ ๋บ ๋ฆฌ๋ชจํธ ์ ์ฅ์์ ๋ชจ๋ ๊ฒ์ ๊ฐ์ ธ์จ๋ค.
ch02-git-basics-chapter.asc์์ ์ด ๋ช ๋ น์ ์ค๋ช ํ๊ณ ch03-git-branching.asc์ ๋ณด๋ฉด ์ฐธ๊ณ ํ ์ ์๋ ์์ ๊ฐ ๋ ์๋ค.
ch05-distributed-git.asc์๋ ์ข์ ์์ ๊ฐ ๋ง๋ค.
Ref๋ฅผ ํ ๊ฐ๋ง ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ch06-github.asc์์ ์ค๋ช ํ๊ณ ๋ฒ๋ค์์ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ch07-git-tools.asc์์ ์ค๋ช ํ๋ค.
Fetch ํ๋ ๊ธฐ๋ณธ Refspec์ ์์ ํ๋ ๋ฐฉ๋ฒ์in ch10-git-internals.asc์์ ์ค๋ช ํ๋ค. ์ํ๋ ๋๋ก ์์ ํ ์ ์๋ค.
git pull
๋ช
๋ น์ git fetch
์ git merge
๋ช
๋ น์ ์์๋๋ก ์คํํ๋ ๊ฒ๋ฟ์ด๋ค. ๊ทธ๋์ ํด๋น ๋ฆฌ๋ชจํธ์์ Fetch ํ๊ณ ์ฆ์ ํ ๋ธ๋์น๋ก Merge๋ฅผ ์๋ํ๋ค.
ch02-git-basics-chapter.asc์์ ์ด ๋ช ๋ น์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ค๊ณ ์ ํํ ๋ฌด์์ Merge ํ๋ ์ง๋ ch02-git-basics-chapter.asc์์ ์ค๋ช ํ๋ค.
ch03-git-branching.asc์์ ๊ทธ ์ด๋ ต๋ค๋ Rebase๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ค.
์ ์ฅ์ URL์ ์ฃผ๊ณ ํ ๋ฒ๋ง Pull ํด ์ฌ ์ ์๋ค๋ ๊ฒ์ ch05-distributed-git.asc์์ ์ค๋ช ํ๋ค.
--verify-signatures
์ต์
์ ์ฃผ๋ฉด Pull ํ ๋ ์ปค๋ฐ์ PGP ์๋ช
์ ๊ฒ์ฆํ๋ค. PGP ์๋ช
์ ch07-git-tools.asc์์ ์ค๋ช
ํ๋ค.
git push
๋ช
๋ น์ ๋ฆฌ๋ชจํธ์๋ ์์ง๋ง, ๋ก์ปฌ์๋ ์๋ ์ปค๋ฐ์ ๊ณ์ฐํ๊ณ ๋์ ๊ทธ ์ฐจ์ด๋งํผ๋ง Push ํ๋ค.
Push๋ฅผ ํ๋ ค๋ฉด ์๊ฒฉ ์ ์ฅ์์ ๋ํ ์ฐ๊ธฐ ๊ถํ์ด ํ์ํ๊ณ ์ธ์ฆ๋ผ์ผ ํ๋ค.
ch02-git-basics-chapter.asc์์ git push
๋ช
๋ น์ผ๋ก
๋ธ๋์น๋ฅผ ์๊ฒฉ ์ ์ฅ์์ Push ํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํ๋ค.
์กฐ๊ธ ๊น๊ฒ ๋ธ๋์น๋ฅผ ํ๋์ฉ ๊ณจ๋ผ์ Push ํ๋ ๋ฐฉ๋ฒ์ ch03-git-branching.asc์์ ์ค๋ช
ํ๋ค. ์๋์ผ๋ก Push ํ๋๋ก ํธ๋ํน ๋ธ๋์น๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ch03-git-branching.asc์์ ์ค๋ช
ํ๋ค.
git push --delete
๋ช
๋ น์ผ๋ก ์๊ฒฉ ์๋ฒ์ ๋ธ๋์น๋ฅผ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ch03-git-branching.asc์์ ์ค๋ช
ํ๋ค.
ch05-distributed-git.asc์์๋ git push
๋ฅผ ์ฃผ๊ตฌ์ฅ์ฐฝ ์ฌ์ฉํ๋ค. ๋ฆฌ๋ชจํธ๋ฅผ ์ฌ๋ฌ ๊ฐ ์ฌ์ฉํด์ ๋ธ๋์น์ ์์
ํ ๋ด์ฉ์ ๊ณต์ ํ๋ ๊ฒ์ ๋ณด์ฌ์ค๋ค.
--tags
์ต์
์ ์ฃผ๊ณ ํ๊ทธ๋ฅผ Push ํ๋ ๋ฐฉ๋ฒ์ ch02-git-basics-chapter.asc์์ ์ค๋ช
ํ๋ค.
์๋ธ๋ชจ๋์ ์ฝ๋๋ฅผ ์์ ํ์ ๋๋ --recurse-submodules
์ต์
์ด ์ข๋ค. ํ๋ก์ ํธ๋ฅผ Push ํ ๋ ์๋ธ๋ชจ๋์ Push ํ ๊ฒ ์์ผ๋ฉด ์๋ธ๋ชจ๋๋ถํฐ Push ํ๋ฏ๋ก ๋งค์ฐ ํธ๋ฆฌํ๋ค. ์ด ์ต์
์ ch07-git-tools.asc์์ ์ค๋ช
ํ๋ค.
ch08-customizing-git.asc์์ pre-push
ํ
์ ๋ํด์ ์ค๋ช
ํ๋ค. ์ด ํ
์ Push ํด๋ ๋๋์ง ๊ฒ์ฆํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ค์ ํ๋ฉด ๊ท์น์ ๋ฐ๋ฅด๋๋ก Push๋ฅผ ๊ฒ์ฆํ ์ ์๋ค.
์ผ๋ฐ์ ์ธ ์ด๋ฆ ๊ท์น์ ๋ฐ๋ผ์ Push ํ๋ ๊ฒ์ด ์๋๋ผ Refspec์ ์ฌ์ฉํด์ ์ํ๋ ์ด๋ฆ์ผ๋ก Push ํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค. ์ด๊ฒ์ ch10-git-internals.asc์์ ์ค๋ช ํ๋ค.
git remote
๋ช
๋ น์ ์๊ฒฉ ์ ์ฅ์ ์ค์ ์ธ ๋ฆฌ๋ชจํธ์ ๊ด๋ฆฌ ๋๊ตฌ๋ค.
๊ธด URL ๋์ โoriginโ ์ฒ๋ผ ์ด๋ฆ์ ์งง๊ฒ ์ง์ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ URL๋์ ์งง์ ๋ฆฌ๋ชจํธ ์ด๋ฆ์ ์ฌ์ฉํ๋ค.
git remote
๋ช
๋ น์ผ๋ก ์ด ๋ฆฌ๋ชจํธ๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ง๋ค์ด ๊ด๋ฆฌํ ์ ์๋ค.
์ด ๋ฆฌ๋ชจํธ๋ฅผ ์กฐํํ๊ณ ์ถ๊ฐํ๊ณ ์ญ์ ํ๊ณ ์์ ํ๋ ๋ฐฉ๋ฒ์ ch02-git-basics-chapter.asc์์ ์ ์ค๋ช ํ๋ค.
์ด ๋ช
๋ น์ git remote add <name> <url>
ํ์์ผ๋ก ์ฌ์ฉํ๊ณ ์ด ์ฑ
์์ ์์ฃผ ์ฌ์ฉ๋๋ค.
git archive
๋ช
๋ น์ ํ๋ก์ ํธ ์ค๋
์ท์ ์์นด์ด๋ธ ํ์ผ๋ก ๋ง๋ค์ด ์ค๋ค.
ch05-distributed-git.asc์์ ์ค๋ช ํ๋๋ฐ ํ๋ก์ ํธ๋ฅผ Tarball๋ก ๋ง๋ค์ด ๊ณต์ ํ ๋ ์ฌ์ฉํ๋ค.
git submodule
๋ช
๋ น์ ์ ์ฅ์ ์์์ ๋ค๋ฅธ ์ ์ฅ์๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉํ๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํน์ ํ์์ ๋ฆฌ์์ค ํ์ผ์ ์๋ธ๋ชจ๋๋ก ์ฌ์ฉํ ์ ์๋ค.
submodule
๋ช
๋ น์ ์๋ add
, update
, sync
๋ฑ์ ํ์ ๋ช
๋ น์ด๋ก ์๋ธ๋ชจ๋์ ๊ด๋ฆฌํ ์ ์๋ค.
์ด ๋ช ๋ น์ ch07-git-tools.asc์์ ์ค๋ช ํ๋ค.
git show
๋ช
๋ น์ Git ๊ฐ์ฒด๋ฅผ ์ฌ๋์ด ์ฝ์ ์ ์๋๋ก ์์ฝํด์ ๋ณด์ฌ์ค๋ค.
ํ๊ทธ๋ ์ปค๋ฐ ์ ๋ณด๋ฅผ ๋ณด๊ณ ์ถ์ ๋ ์ด ๋ช
๋ น์ ์ฌ์ฉํ๋ค.
ch02-git-basics-chapter.asc์ ๋ณด๋ฉด Annotated ํ๊ทธ์ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ฃผ๋ ์์ ๊ฐ ๋์จ๋ค.
ch07-git-tools.asc์์ ์ด ๋ช ๋ น์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ณด์ฌ์ค๋ค.
Merge ํ๋ค๊ฐ ์ถฉ๋์ด ๋ฌ์ ๋ ํน์ ๋ฒ์ ์ ํ์ผ ๋ด์ฉ์ git show
๋ก ๊บผ๋ด ๋ณผ ์ ์๋ค. ch07-git-tools.asc์์ ์ด ์ ์ ์ค๋ช
ํ๋ค.
git shortlog
๋ช
๋ น์ git log
๋ช
๋ น์ ๊ฒฐ๊ณผ๋ฅผ ์์ฝํด์ ๋ณด์ฌ ์ค๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
์ต์
๋ git log
๋ช
๋ น์ ๊ฒ๊ณผ ๋งค์ฐ ๋น์ทํ๋ค. ์ด ๋ช
๋ น์ Author ๋ณ๋ก ์ปค๋ฐ์ ๋ฌถ์ด์ ๋ณด์ฌ์ค๋ค.
์ด ๋ช ๋ น์ Changelog ํ์ผ์ ๋ง๋ค ๋ ์ ์ฉํ ๋ฐ ch05-distributed-git.asc์์ ๋ณด์ฌ์ค๋ค.
git describe
๋ช
๋ น์ ์ปค๋ฐ๊ณผ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ์ ์กฐํฉํด์ ์ฌ๋์ด ์ฝ์ ์ ์๋ ์คํธ๋ง์ ๋ง๋ค์ด ์ค๋ค.
์ปค๋ฐ SHA-1์ฒ๋ผ ์๋ณ ๊ฐ๋ฅํ๊ณ ์ฌ๋์ด ์ดํดํ ์ ์๋ ์ ๋ณด๊ฐ ํ์ํ ๋ ์ฌ์ฉํ๋ค.
ch05-distributed-git.asc์ ch05-distributed-git.asc์์ git describe
๋ช
๋ น์ ์ค๋ช
ํ๋ค. ์ด ๋ช
๋ น์ผ๋ก ๋ฐฐํฌ ํ์ผ์ ์ด๋ฆ์ ์ง๋๋ค.
Git์๋ ๋๋ฒ๊น ์ฉ ๋ช ๋ น์ด๋ ์๋ค. ๋๊ฐ ๋ฒ๊ทธ๋ฅผ ๋ง๋ค์๋์ง ์ธ์ ์ด๋์ ์๊ฒผ๋์ง ์ฐพ์๋ด๋ ๋ฐ ๋์์ด ๋๋ค.
git bisect
๋ ๊ต์ฅํ ์ ์ฉํ๋ค. ์ด์ง ํ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ ๋ฒ๊ทธ๋ ๋ฌธ์ ๊ฐ ์๊ธด ์ปค๋ฐ์ ์ฝ๊ฒ ์ฐพ์ ์ ์๋ค.
์ด ๋ช ๋ น์ ch07-git-tools.asc์์ ์ ์ค๋ช ํ๋ค.
git blame
์ ํ์ผ์ ๊ฐ ๋ผ์ธ์ ๋๊ฐ ๋ง์ง๋ง์ผ๋ก ์์ ํ๋์ง ๋ณด์ฌ์ค๋ค.
๊ทธ๋์ ํน์ ์ฝ๋์ ๋ํด ๊ถ๊ธํ ๊ฒ ์์ ๋ ๋๊ตฌ์๊ฒ ๋ฌผ์ด์ผ ํ ์ง ๋ฐ๋ก ์ ์ ์๋ค.
์ด ๋ช ๋ น์ ch07-git-tools.asc์์ ๋ค๋ฃฌ๋ค.
์์ค ์ฝ๋์์ ์คํธ๋ง์ด๋ ์ ๊ทํํ์์ ์ฐพ์ ์ ์๋ค. git grep
๋ช
๋ น์ ์ฌ์ฉํ๋ฉด ์์ ์์ค ์ฝ๋๊น์ง ์ฐพ๋๋ค.
ch07-git-tools.asc์์ ์ด ๋ช ๋ น์ ์ค๋ช ํ๋ค.
์ปค๋ฐ ๋ฌถ์์ Patch ๋ฌถ์์ฒ๋ผ ๋ค๋ฃจ๋ ๊ฒ์ด ํธํ ๋๊ฐ ์๋ค. ์ด๋ด ๋๋ฅผ ์ํด์ Git์๋ ์ปค๋ฐ ๋ช ๊ฐ๋ง ์ถ์ถํ๊ณ ์ ์ฉํ๊ณ ๊ด๋ฆฌํ๋ ๋ช ๋ น์ด๊ฐ ์๋ค. ์ด ๋ช ๋ น์ด๋ ๋ธ๋์น๋ฅผ ๊ด๋ฆฌํ ๋ ์ข๋ค.
git cherry-pick
๋ช
๋ น์ ์ปค๋ฐ ํ๋๋ง ๊ฐ์ ธ์ฌ ๋ ์ฌ์ฉํ๋ค. ํ ๋ธ๋์น์ ์ ์ปค๋ฐ์ผ๋ก ์ ์ฉ๋๋ค.
์ด ๋ช
๋ น์ ๋ธ๋์น๋ฅผ ํต์งธ๋ก Merge ํ๊ธฐ ๋ณด๋ค ์ปค๋ฐ ํ๋ ๊ฐ ์ ๋๋ง Merge ํ๊ณ ์ถ์ ๋ ์ข๋ค.
์ด ๋ช ๋ น์ผ๋ก ์ปค๋ฐ์ ๊ณ ๋ฅด๋ ๊ฒ์ ch05-distributed-git.asc์์ ์ค๋ช ํ๋ค.
git rebase
๋ช
๋ น์ check-pick
์ ์ฌ๋ฌ ๋ฒ ์คํํด ์ฃผ๋ ๊ฒ๊ณผ ๊ฐ๋ค.
์ฐ๊ฒฐ๋ ์ปค๋ฐ์ ๊ทธ ์์๋๋ก ํ๋ฐฉ์ Cherry-pick ํด์จ๋ค.
Rebase๋ ch03-git-branching.asc์์ ์ค๋ช ํ๋ค. ์ด๋ฏธ ๊ณต๊ฐํ ๋ธ๋์น๋ฅผ Rebase ํ ๋ ์๊ธฐ๋ ๋ฌธ์ ๋ ๋ค๋ฃฌ๋ค.
ch07-git-tools.asc์์๋ ํ์คํ ๋ฆฌ๋ฅผ ๋ ์ ์ฅ์๋ก ๋ถ๋ฆฌํ๋ ๊ฒ์ ๋ณด์ฌ์ฃผ๋๋ฐ ์ฌ๊ธฐ์ --onto
์ต์
์ ์ฌ์ฉํ๋ค.
ch07-git-tools.asc์์ Rebase ํ๋ฉด์ ๋ฐ์ํ ์ถฉ๋์ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง ๋ณด์ฌ์ค๋ค.
-i
์ต์
์ ์ฃผ๊ณ ์ด ๋ช
๋ น์ ์คํํ๋ฉด ๋ํํ์ผ๋ก ์คํํ ์ ์๋ค. ch07-git-tools.asc์์ ์ค๋ช
ํ๋ค.
git revert
๋ช
๋ น์ git cherry-pick
๋ช
๋ น์ ๋ฐ๋๋ก ๋ณผ ์ ์๋ค.
ํด๋น ์ปค๋ฐ์ ๋๋๋ฆฌ๋ ์ปค๋ฐ์ ์๋ก ์์ฑํ๋ค.
ch07-git-tools.asc์์ Merge ์ปค๋ฐ์ ๋๋๋ฆฌ๋ ๊ฒ์ ๋ณด์ฌ์ค๋ค.
๋ฉ์ผ๋ง ๋ฆฌ์คํธ๋ก ๊ด๋ฆฌํ๋ ํ๋ก์ ํธ๊ฐ ๋ง์ด ์๋ค. Git ํ๋ก์ ํธ ์์ฒด๋ ๊ทธ๋ ๋ค. Git์๋ ์ด๋ฉ์ผ๋ก ์์ ํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด ์ฃผ๋ ๋๊ตฌ๊ฐ ๋ค์ด ์๋ค. Patch๋ฅผ ์์ฑํด์ ์ด๋ฉ์ผ์ ๋ณด๋ด๊ณ ๋ฉ์ผ ๋ฐ์ค์์ Patch๋ฅผ ์ ์ฉํ๋ ๊ณผ์ ์ ๋์์ค๋ค.
git apply
๋ช
๋ น์ git diff
๋ช
๋ น์ผ๋ก ์์ฑํ Patch๋ฅผ ์ ์ฉํ๋ ๋ช
๋ น์ด๋ค. GNU diff ๋ช
๋ น์ผ๋ก ์์ฑํ Patch๋ ๊ฐ๋ฅํ๋ค.
์ฝ๊ฐ์ ์ฐจ์ด๋ ์์ง๋ง patch
๋ช
๋ น์ด๋ ๋น์ทํ๋ค.
์ด ๋ช ๋ น์ ์ฌ์ฉํ๋ ์ํฉ๊ณผ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ch05-distributed-git.asc์์ ์ค๋ช ํ๋ค.
git am
๋ช
๋ น์ผ๋ก ์ด๋ฉ์ผ ์ธ๋ฐ์ค์ ๋ mbox ํฌ๋งท์ Patch๋ฅผ ์ ์ฉํ ์ ์๋ค.
์ด๋ฉ์ผ๋ก ํจ์น๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์ ์ฉํ๋ค.
git am
์ ์ธ์ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง๋ ch05-distributed-git.asc์์ ๋ค๋ฃฌ๋ค. --resolved
, -i
, -3
์ต์
์ฌ์ฉ๋ฒ์ ์ค๋ช
ํ๋ค.
git am
๋ช
๋ น์ ์ฌ์ฉํ ๋ ์ค์ ํ ์ ์๋ ํ
์ ch08-customizing-git.asc์์ ๋ค๋ฃฌ๋ค.
์ด ๋ช ๋ น์ผ๋ก GitHub Pull Request์ Patch๋ ์ ์ฉํ ์ ์๋๋ฐ ch06-github.asc์์ ์ค๋ช ํ๋ค.
git format-patch
๋ช
๋ น์ Patch๋ฅผ mbox ํฌ๋งท์ผ๋ก ์์ฑํ๋ ๋ฐ ์ฌ์ฉํ๋ค. ์์ฑ ํ ํจ์น๋ฅผ ์ฝ๊ฒ ๋ฉ์ผ๋ง ๋ฆฌ์คํธ๋ก ๋ณด๋ผ ์ ์๋ค.
git format-patch
๋ก ํ๋ก์ ํธ์ ๊ธฐ์ฌํ๋ ์์ ๋ฅผ ch05-distributed-git.asc์์ ๋ณด์ฌ์ค๋ค.
git imap-send
๋ช
๋ น์ git format-patch
๋ก ์์ฑํ ๋ฉ์ผ์ IMAP drafts ํด๋์ ๋ฃ์ด์ค๋ค.
git imap-send
๋ช
๋ น์ผ๋ก ์์ ๋ ch05-distributed-git.asc์์ ์ดํด๋ณธ๋ค. ํจ์น๋ฅผ ๋ณด๋ด์ ํ๋ก์ ํธ์ ๊ธฐ์ฌํด๋ณด๋ ์์ ๋ค.
git send-email
๋ช
๋ น์ git format-patch
๋ช
๋ น์ผ๋ก ์์ฑํ Patch๋ฅผ ์ด๋ฉ์ผ๋ก ๋ณด๋ด๋ ๋ฐ ์ฌ์ฉํ๋ค.
ch05-distributed-git.asc์์ git send-email
๋ช
๋ น์ผ๋ก ํจ์น๋ฅผ ๋ณด๋ด์ ๋ค๋ฅธ ํ๋ก์ ํธ์ ๊ธฐ์ฌํ๋ ๊ฒ์ ๋ณด์ฌ์ค๋ค.
git request-pull
๋ช
๋ น์ ๋ฉ์ผ ๋ฐ๋๋ฅผ ์์ฑํด์ฃผ๋ ๋ช
๋ น์ด๋ค. ๊ทธ๋์ ์ฝ๊ฒ ๋ค๋ฅธ ์ฌ๋์๊ฒ ๋ฉ์ผ์ ๋ณด๋ผ ์ ์๋ค.
๋ธ๋์น์ ์ปค๋ฐํ๊ณ Push ํด ๋์ ์ํ๋ฅผ ๋๊ตฐ๊ฐ์๊ฒ ์๋ฆด ๋ ์ ์ฉํ๋ค. Patch ์์ฒด๋ ์ด๋ฉ์ผ๋ก ๋ณด๋ด์ง ์๊ณ ์ ๋ณด๋ง ์์ฝํด ๋ณด๋ผ ์ ์๋ค. ์ด ๋ช
๋ น์ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ์ผ๋ก ๋ณด๋ด๋ฉด ๋๋ค.
ch05-distributed-git.asc์์ git request-pull
๋ช
๋ น์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ณด์ฌ์ค๋ค.
Git์๋ ๋ค๋ฅธ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ ์ง์ํ๋ ๋ช ๋ น์ด๋ ์๋ค.
git svn
๋ช
๋ น์ Git์ Subversion์ ํด๋ผ์ด์ธํธ๋ก ์ฌ์ฉํ๋ ๋ช
๋ น์ด๋ค.
๊ทธ๋์ Git์ผ๋ก Subversion ์๋ฒ์ ์๋ ์ปค๋ฐ์ Checkout ํ ์ ์๋ค.
ch09-git-and-other-systems.asc์์ ์์ธํ ์ค๋ช ํ๋ค.
๋ฒ์ ๊ด๋ฆฌ ์์คํ
์ ๊ฐ๋ฆฌ์ง ์๊ณ ๋ฐ์ดํฐ๋ฅผ Git์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์๋ ๋ค๋ชฉ์ ๋ช
๋ น์ด๋ ์๋ค. ๋ฒ์ ๊ด๋ฆฌ ์์คํ
๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ํ์์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ๋ ๊ฐ์ ธ์ฌ ์ ์๋ค. git fast-import
๋ช
๋ น์ ๋ค๋ฅธ ํฌ๋งท์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๋งคํํ ์ ์๊ฒ ํด์ค๋ค.
ch09-git-and-other-systems.asc์์ ์ด ๋ช ๋ น์ ์ค๋ช ํ๋ค.
๊ด๋ฆฌ์๋ Git ์ ์ฅ์์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ํด๊ฒฐํด์ผ ํ๋ค. Git์ ์ด๋ ํ์ํ ๋ช ๋ น์ด๋ ์ ๊ณตํ๋ค.
git gc
๋ ์ ์ฅ์์ ํ์์๋ ํ์ผ์ ์ญ์ ํ๊ณ ๋จ์ ํ์ผ์ ์์ถํ๋ โGarbage Collectionโ ๋ช
๋ น์ด๋ค.
์ง์ ์คํ์์ผ๋ ๋์ง๋ง Git์ด ์๋์ผ๋ก ์คํํด์ค๋ค. ์์ธํ ์ค๋ช ์ ch10-git-internals.asc์์ ํ๋ค.
git fsck
๋ Git ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌธ์ ๊ฐ ์๋์ง ๊ฒ์ฌํด์ค๋ค.
ch10-git-internals.asc์์ Dangling ๊ฐ์ฒด๋ฅผ ์ฐพ๋ ๋ฒ์ ์ค๋ช ํ๋ค.
git reflog
๋ช
๋ น์ HEAD๊ฐ ๊ฐ๋ฆฌ์ผฐ๋ ์ปค๋ฐ์ ๋ก๊ทธ๋ฅผ ๋ณด์ฌ์ค๋ค. ํ์คํ ๋ฆฌ๋ฅผ ์ฌ์์ฑํด์ ์์ด๋ฒ๋ฆฐ ์ปค๋ฐ์ ์ฐพ์ ๋ ์ ์ฉํ๋ค.
ch07-git-tools.asc์์ ์ด ๋ช
๋ น์ ์ค๋ช
ํ๋ค. git log
๋ช
๋ น์ -g
์ต์
์ ์ฃผ๋ฉด git log
๋ช
๋ น์ ๊ฒฐ๊ณผ์ฒ๋ผ Reflog๋ฅผ ์ถ๋ ฅํ๋ค.
์์ด๋ฒ๋ฆฐ ๋ธ๋์น๋ฅผ ๋ณต๊ตฌํ๋ ๋ฒ์ ch10-git-internals.asc์์๋ ์ค๋ช ํ๋ค.
git filter-branch
๋ช
๋ น์ ์ปค๋ฐ ๋ญ์น๋ฅผ ์์ ํ๋ ๋ฐ ์ฌ์ฉํ๋ค. ์ ์ฒด ํ์คํ ๋ฆฌ์์ ํ์ผ์ ์ญ์ ํ๊ฑฐ๋ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐ ์ฌ์ฉํ๋ค.
ch07-git-tools.asc์์ --commit-filter
, --subdirectory-filter
, --tree-filter
๊ฐ์ ์ต์
์ฌ์ฉ๋ฒ์ ์ค๋ช
ํ๋ค.
ch09-git-and-other-systems.asc, ch09-git-and-other-systems.asc์์๋ ๋ค๋ฅธ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์์ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐ๋ก ์ก๋ ๋ฐ ์ฌ์ฉํ๋ค.
์ด ์ฑ ์์๋ ์ ์์ค Plumbing ๋ช ๋ น์ด๋ ๋ง์ด ์๊ฐํ๋ค.
ch06-github.asc์์๋ ์๋ฒ์ ์๋ ์ ์์ค Ref๋ฅผ ์กฐํํ๋ ls-remote
๋ช
๋ น์ ์๊ฐํ๋ค.
ch07-git-tools.asc์ ch07-git-tools.asc, ch07-git-tools.asc์์ ์ฌ์ฉํ๋ ls-files
๋ Staging Area์ ์ ์์ค ๋ชจ์ต์ ๋ณด์ฌ์ค๋ค.
rev-parse
๋ช
๋ น์ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด์ SHA-1 ๊ฐ์ ๋ณด์ฌ์ค๋ค. ch07-git-tools.asc์์ ๋ค๋ฃฌ๋ค.
์ ์์ค ๋ช ๋ น์ธ Plumbing ๋ช ๋ น์ ๊ฑฐ์ ch10-git-internals.asc์์ ์ค๋ช ํ๋ค. Plumbing ๋ช ๋ น์๋ ์ด ์ฅ์์๋ง ์ค๋ช ํ๋ ค๊ณ ํ๋ค. ๋ค๋ฅธ ์ฅ์์๋ ์ต๋ํ Plumbing ๋ช ๋ น์ด๋ ์ฌ์ฉํ์ง ์์ผ๋ ค๊ณ ๋ ธ๋ ฅํ๋ค.