๐ Chapter 2: Git์ ๊ธฐ์ด
๐ฆ Git ์ ์ฅ์ ๋ง๋ค๊ธฐโ
๐ฃ ๊ธฐ์กด ๋๋ ํฐ๋ฆฌ๋ฅผ Git ์ ์ฅ์๋ก ๋ง๋ค๊ธฐโ
> git init
- ์ด ๋ช
๋ น์
.git
์ด๋ผ๋ ํ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ ๋ค. ์ด ๋๋ ํฐ๋ฆฌ๋ ์ ์ฅ์์ ํ์ํ ๋ผ๋ ํ์ผ์ด ๋ค์ด์๋ค. - Git์ด ํ์ผ์ ๊ด๋ฆฌํ๊ฒ ํ๋ ค๋ฉด ์ ์ฅ์์ ํ์ผ์ ์ถ๊ฐํ๊ณ ์ปค๋ฐํด์ผ ํ๋ค.
> git add *.c // ํ์ผ์ ์ถ๊ฐ
> git add LICENSE // ํ์ผ์ ์ถ๊ฐ
> git commit -m 'initial project version' // ์ปค๋ฐ
๐ฃ ๊ธฐ์กด ์ ์ฅ์๋ฅผ Clone ํ๊ธฐโ
- ๋ค๋ฅธ ํ๋ก์ ํธ์ ์ฐธ์ฌํ๊ฑฐ๋(contribute) Git ์ ์ฅ์๋ฅผ ๋ณต์ฌํ๊ณ ์ถ์ ๋
git clone
๋ช ๋ น์ ์ฌ์ฉํ๋ค. - Git์ด SVN๊ณผ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ ์๋ฒ์ ์๋ ๊ฑฐ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํ๋ค.
git clone
์ ์คํํ๋ฉด ํ๋ก์ ํธ ํ์คํ ๋ฆฌ๋ฅผ ์ ๋ถ ๋ฐ์์จ๋ค.
> git clone [url]
- ์ ์ฅ์์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๊ฐ์ ธ์์ ์๋์ผ๋ก ๊ฐ์ฅ ์ต์ ๋ฒ์ ์
checkout
ํด ๋๋๋ค.
> git clone [url] [๋๋ ํฐ๋ฆฌ ๋ช
] // ๋๋ ํฐ๋ฆฌ ๋ช
์ ๋ณ๊ฒฝํ ์ ์๋ค.
๐ฆ ์์ ํ๊ณ ์ ์ฅ์์ ์ ์ฅํ๊ธฐโ
- ํ์ผ์ ์์ ํ๋ค๊ฐ ์ ์ฅํ๊ณ ์ถ์ผ๋ฉด ์ค๋ ์ท์ ์ปค๋ฐํ๋ค.
- ์ํน ๋๋ ํฐ๋ฆฌ์ ๋ชจ๋ ํ์ผ์ ํฌ๊ฒ Tracked(๊ด๋ฆฌ๋์์)์ Untracked(๊ด๋ฆฌ๋์์ด ์๋)๋ก ๋๋๋ค.
- Tracked ํ์ผ์ ์ด๋ฏธ ์ค๋ ์ท์ ํฌํจ๋ผ ์๋ ํ์ผ์ด๊ณ Tracked ํ์ผ์ ๋ Unmodified(์์ ํ์ง ์์)์ Modified(์์ ํจ) ๊ทธ๋ฆฌ๊ณ Staged(์ปค๋ฐ์ผ๋ก ์ ์ฅ์์ ๊ธฐ๋กํ ) ์ํ ์ค ํ๋์ด๋ค.
- ์ฒ์์ ์ ์ฅ์๋ฅผ
Clone
ํ๋ฉด ๋ชจ๋ ํ์ผ์Tracked
์ด๋ฉด์Unmodified
์ํ์ด๋ค. ์ดํ ์ด๋ค ํ์ผ์ ์์ ํ๋ฉด Git์ ๊ทธ ํ์ผ์Modified
์ํ๋ก ์ธ์ํ๋ค. - ์ค์ ๋ก ์์ ํ ํ์ผ์
Staged
์ํ๋ก ๋ง๋ค๊ณ ,Staged
์ํ์ ํ์ผ์ ์ปค๋ฐํ๋ค. (์ฌ์ดํด ๋ฐ๋ณต)
๐ฃ ํ์ผ์ ์ํ ํ์ธํ๊ธฐโ
- ํ์ผ ์ํ๋ฅผ ํ์ธํ๋ ค๋ฉด
git status
๋ช ๋ น์ ์ฌ์ฉํ๋ค.
> git status
- ํ๋ก์ ํธ์ README ํ์ผ์ ๋ง๋ค๋ฉด README ํ์ผ์ ์๋ก ๋ง๋ ํ์ผ์ด๊ธฐ ๋๋ฌธ์
git status
๋ฃฐ ์คํํ๋ฉดUntracked files
์ ๋ค์ด ์๋ค. - Untracked ์ํ๋ ์์ง ์ค๋ ์ท(์ปค๋ฐ)์ ๋ฃ์ด์ง์ง ์๋ ํ์ผ์ด๋ค.
๐ฃ ํ์ผ ์๋ก ์ถ์ ํ๊ธฐโ
git add
๋ช ๋ น์ผ๋ก ํ์ผ์ ์๋ก ์ถ์ ํ ์ ์๋ค.
> git add README
- ๊ทธ ํ
git status
๋ช ๋ น์ ๋ค์ ์คํํ๋ฉด Tracked ์ํ์ด๋ฉด์ ์ปค๋ฐ์ ์ถ๊ฐ๋ Staged ์ํ๋ผ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. - ์ปค๋ฐํ๋ฉด
git add
๋ฅผ ์คํํ ์์ ์ ํ์ผ์ด ์ปค๋ฐ๋์ด ์ ์ฅ์ ํ์คํ ๋ฆฌ์ ๋จ๋๋ค.
๐ฃ Modified ์ํ์ ํ์ผ์ Stageํ๊ธฐโ
- ์ด๋ฏธ Tracked ์ํ์ธ ํ์ผ์ ์์ ํ๋ฉด
Changes not staged for commit
์ ์๋ค.
โฏ git status
ํ์ฌ ๋ธ๋์น pro-git-chapter-2 ๋ธ๋์น๊ฐ 'origin/master'์ ๋ง๊ฒ ์
๋ฐ์ดํธ๋ ์ํ์
๋๋ค.
์ปค๋ฐํ๋๋ก ์ ํ์ง ์์ ๋ณ๊ฒฝ ์ฌํญ:
(๋ฌด์์ ์ปค๋ฐํ ์ง ๋ฐ๊พธ๋ ค๋ฉด "git add <ํ์ผ>..."์ ์ฌ์ฉํ์ญ์์ค)
(use "git restore <file>..." to discard changes in working directory)
์์ ํจ: "Pro Git 2\355\214\220/Chapter 1/README.md"
- ์ด ์ํ๋ ์์ ํ ํ์ผ์ด Tracked ์ํ์ด์ง๋ง ์์ง Staged ์ํ๋ ์๋๋ผ๋ ์ ์ด๋ค.
- Staged ์ํ๋ก ๋ง๋ค๊ธฐ ์ํด์๋
git add
๋ช ๋ น์ ์คํํด์ผ ํ๋ค. git add
ํ ํด๋น ํ์ผ์ ๋ค์ ์์ ํ๋ฉด ๊ทธ ํ์ผ์ ์ํ๋ Staged ์ํ์ด๋ฉด์ ๋์์ Unstaged ์ํ๋ก ๋์ค๊ฒ ๋๋ค. ์ด๋ ๊ฒ ๋๋ ์ด์ ๋git commit
์ ์คํํ๋ ์์ ์ ๋ฒ์ ์ด ์ปค๋ฐ๋๋ ๊ฒ์ด ์๋๋ผ ๋ง์ง๋ง์ผ๋กgit add
๋ช ๋ น์ ์คํํ์ ๋์ ๋ฒ์ ์ด ์ปค๋ฐ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ต์ ์ํ๋ก ๋ฐ์ํ๊ธฐ ์ํด์๋ ๋ค์git add
๋ช ๋ น์ ์คํํด์ ์ต์ ๋ฒ์ ์ Staged ์ํ๋ก ๋ง๋ค์ด์ผ ํ๋ค.
๐ฃ ํ์ผ ์ํ๋ฅผ ์งค๋งํ๊ฒ ํ์ธํ๊ธฐโ
git status -s
๋๋git status --short
์ฒ๋ผ ์ต์ ์ ์ฃผ๋ฉด ํ์ฌ ๋ณ๊ฒฝํ ์ํ๋ฅผ ์งค๋งํ๊ฒ ๋ณด์ฌ์ค๋ค.
> git status -s
M "Pro Git 2\355\214\220/Chapter 1/README.md"
?? "Pro Git 2\355\214\220/Chapter 2/"
- ์์ง ์ถ์ ํ์ง ์๋ ์ ํ์ผ ์์๋
??
ํ์๊ฐ ๋ถ๋๋ค. - Staged ์ํ๋ก ์ถ๊ฐํ ํ์ผ ์ค ์๋ก ์์ฑํ ํ์ผ ์์๋
A
ํ์๊ฐ, ์์ ํ ํ์ผ ์์๋M
ํ์๊ฐ ๋ถ๋๋ค. MM
์ด ๋ถ๋ ๊ฒฝ์ฐ๋ ํด๋น ํ์ผ์ ๋ณ๊ฒฝํ๊ณ Staged ์ํ๋ก ์ถ๊ฐํ ํ ๋ ๋ด์ฉ์ ๋ณ๊ฒฝํด์ Staged์ด๋ฉด์ Unstaged ์ํ์ธ ํ์ผ์ด๋ค.
๐ฃ ํ์ผ ๋ฌด์ํ๊ธฐโ
- ๋ก๊ทธ ํ์ผ์ด๋ ๋น๋ ์์คํ ์ด ์๋์ผ๋ก ์์ฑํ๋ ํ์ผ ๊ฐ์ ๊ฒฝ์ฐ์๋ Git์ด ๊ด๋ฆฌํ ํ์๊ฐ ์๋ค.
- ์ด๋ฌํ ํ์ผ์ ๋ฌด์ํ๋ ค๋ฉด
.gitignore
ํ์ผ์ ๋ง๋ค๊ณ ๊ทธ ์์ ๋ฌด์ํ ํ์ผ ํจํด์ ์ ๋๋ค. .gitignore
ํ์ผ์ ๋ณดํต ์ฒ์์ ๋ง๋ค์ด ๋๋ ๊ฒ์ด ํธ๋ฆฌํ๋ค. ๊ทธ๋์ผ Git ์ ์ฅ์์ ์ปค๋ฐํ๊ณ ์ถ์ง ์์ ํ์ผ์ ์ค์๋ก ์ปค๋ฐํ๋ ์ผ์ ๋ฐฉ์งํ ์ ์๋ค..gitignore
ํ์ผ์ ์ ๋ ฅํ๋ ํจํด์ ์๋ ๊ท์น์ ๋ฐ๋ฅธ๋ค.
- ์๋ฌด๊ฒ๋ ์๋ ๋ผ์ธ์ด๋, #๋ก ์์ํ๋ ๋ผ์ธ์ ๋ฌด์ํ๋ค.
- ํ์ค Glob ํจํด์ ์ฌ์ฉํ๋ค.
- ์ฌ๋์(/)๋ก ์์ํ๋ฉด ํ์ ๋๋ ํฐ๋ฆฌ์ ์ ์ฉ๋์ง ์๋๋ค.
- ๋๋ ํฐ๋ฆฌ๋ ์ฌ๋์(/)๋ฅผ ๋์ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ํํํ๋ค.
- ๋๋ํ(!)๋ก ์์ํ๋ ํจํด์ ํ์ผ์ ๋ฌด์ํ์ง ์๋๋ค.
.gitignore
์์ ์ฐธ๊ณ
๐ฃ Staged์ Unstaged ์ํ์ ๋ณ๊ฒฝ ๋ด์ฉ์ ๋ณด๊ธฐโ
- ์ด๋ค ๋ด์ฉ์ด ๋ณ๊ฒฝ๋๋์ง ์ดํด๋ณด๋ ค๋ฉด
git status
๋ช ๋ น์ด ์๋๋ผgit diff
๋ช ๋ น์ ์ฌ์ฉํด์ผ ํ๋ค.
> git diff
- ์ด ๋ช ๋ น์ ์ํน ๋๋ ํฐ๋ฆฌ์ ์๋ ๊ฒ๊ณผ Staging Area์ ์๋ ๊ฒ์ ๋น๊ตํ๋ค.
- ๋ง์ฝ ์ปค๋ฐํ๋ ค๊ณ Staging Area์ ๋ฃ์ ํ์ผ์ ๋ณ๊ฒฝ ๋ถ๋ถ์ ๋ณด๊ณ ์ถ์ผ๋ฉด
git diff --staged
์ต์ ์ ์ฌ์ฉํ๋ค. git diff
๋ช ๋ น์ ๋ง์ง๋ง์ผ๋ก ์ปค๋ฐํ ํ์ ์์ ํ ๊ฒ๋ค ์ ๋ถ๋ฅผ ๋ณด์ฌ์ฃผ์ง ์๋๋ค.git diff
๋ Unstaged ์ํ์ธ ๊ฒ๋ค๋ง ๋ณด์ฌ์ค๋ค. ์ฆ, ์์ ํ ํ์ผ์ ๋ชจ๋ Staging Area์ ๋ฃ์๋ค๋ฉดgit diff
๋ช ๋ น์ ์๋ฌด๊ฒ๋ ์ถ๋ ฅํ์ง ์๋๋ค.- Staged ์ํ์ธ ํ์ผ์
git diff --cached
์ต์ ์ผ๋ก ํ์ธํ๋ค.--staged
์--cached
๋ ๊ฐ์ ์ต์ ์ด๋ค.
๐ฃ ๋ณ๊ฒฝ์ฌํญ ์ปค๋ฐํ๊ธฐโ
- Git์ ์์ฑํ๊ฑฐ๋ ์์ ํ๊ณ ๋์
git add
๋ช ๋ น์ผ๋ก ์ถ๊ฐํ์ง ์์ ํ์ผ์ ์ปค๋ฐํ์ง ์๋๋ค. git commit
์ ์คํํ์ฌ ์ปค๋ฐํ๋ค.
> git commit
- ์ปค๋ฐ์ ํ๊ฒ ๋๋ฉด Git ์ค์ ์์ ์ง์ ๋ ํธ์ง๊ธฐ(Vim, Emacs)๊ฐ ์คํ๋๊ณ , ์๋์ผ๋ก ํ ์คํธ๊ฐ ์๋์ผ๋ก ํฌํจ๋๋ค.
- ์๋์ผ๋ก ์์ฑ๋๋ ์ปค๋ฐ ๋ฉ์์ง์ ์ฒซ ๋ผ์ธ์ ๋น์ด ์๊ณ ๋์งธ ๋ผ์ธ๋ถํฐ
git status
๋ช ๋ น์ด ๊ฒฐ๊ณผ๊ฐ ์ฑ์์ง๋ค. (์ด ๋ฉ์์ง๋ ์ญ์ ํ๊ฑฐ๋ ์ถ๊ฐํ ์ ์๋ค.git commit -v
์ ใ ๊ฒ ๋๋ฉด ํธ์ง๊ธฐ์diff
๋ฉ์์ง๊ฐ ์ถ๊ฐ๋๋ค.) - ์ด๋ ๊ฒ ์ปค๋ฐ์ ํ๊ฒ ๋๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ถ๋ ฅ๋๋๋ฐ ์๋ ๊ฐ์ ๊ฒฝ์ฐ๋
object-oriented-chapter-7
๋ธ๋์น์ ์ปค๋ฐํ๊ณ ์ฒดํฌ์ฌ์a742431
๋ผ๊ณ ์๋ ค์ค๋ค.
โฏ git commit
[object-oriented-chapter-7 a742431] [Update] object oriented chapter 7 link
1 file changed, 7 insertions(+), 1 deletion(-)
๐ฃ Staging Area ์๋ตํ๊ธฐโ
- Staging Area๋ฅผ ์๋ตํ๋ ค๋ฉด
git commit
๋ช ๋ น์ ์คํํ ๋-a
์ต์ ์ ์ถ๊ฐํ๋ฉด Git์ Tracked ์ํ์ ํ์ผ์ ์๋์ผ๋ก Staging Area์ ๋ฃ๋๋ค.
> git commit -a
๐ฃ ํ์ผ ์ญ์ ํ๊ธฐโ
- Git์์ ํ์ผ์ ์ ๊ฑฐํ๋ ค๋ฉด
git rm
๋ช ๋ น์ผ๋ก Tracked ์ํ์ ํ์ผ์ ์ญ์ ํ ํ์ ์ปค๋ฐํด์ผ ํ๋ค. ์ด ๋ช ๋ น์ ์ํน ๋๋ ํฐ๋ฆฌ์ ์๋ ํ์ผ๋ ์ญ์ ํ๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก ํ์ผ๋ ์ง์์ง๋ค. - ์ปค๋ฐํ๋ฉด ํ์ผ์ ์ญ์ ๋๊ณ Git์ ์ด ํ์ผ์ ๋๋ ์ถ์ ํ์ง ์๋๋ค.
- ์ด๋ฏธ ํ์ผ์ ์์ ํ๊ฑฐ๋, ์์ ํ ํ์ผ์ Index์ ์ถ๊ฐํ๋ค๋ฉด
-f
์ต์ ์ ์ฃผ์ด ๊ฐ์ ๋ก ์ญ์ ํด์ผ ํ๋ค. - ๋ํ, Staging Area์์๋ง ์ ๊ฑฐํ๊ณ ์ํน ๋๋ ํฐ๋ฆฌ์ ์๋ ํ์ผ์ ์ง์ฐ์ง ์๊ณ ๋จ๊ฒจ๋๋ ค๋ฉด
--cached
์ต์ ์ ์ฌ์ฉํ๋ค.
> git rm --cached README
- ๋ค์๊ณผ ๊ฐ์ด ์ฌ๋ฌ ๊ฐ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ญ์ ํ ์๋ ์๋ค. (log/ ๋๋ ํฐ๋ฆฌ์ ์๋ .log ํ์ผ์ ๋ชจ๋ ์ญ์ ํ๋ค.)
> git rm log\/*.log
๐ฃ ํ์ผ ์ด๋ฆ ๋ณ๊ฒฝํ๊ธฐโ
- Git์ ํ์ผ ์ด๋ฆ์ ๋ณ๊ฒฝ์ด๋ ํ์ผ์ ์ด๋์ ๋ช ์์ ์ผ๋ก ๊ด๋ฆฌํ์ง ์๋๋ค. ์ฆ, ํ์ผ ์ด๋ฆ์ด ๋ณ๊ฒฝ๋๋ค๋ ๋ณ๋์ ์ ๋ณด๋ฅผ ์ ์ฅํ์ง ์๋๋ค.
- ์๋์ ๊ฐ์ด ํ์ผ ์ด๋ฆ์ ๋ณ๊ฒฝํ ์ ์๋ค.
> git mv file_from file_to
- ์
mv
๋ช ๋ น์ด๋ ์๋ ๋ช ๋ น์ ์ํํ ๊ฒ๊ณผ ์์ ํ ๋์ผํ๋ค.
> mv file_from file_to
> git rm file_from
> git add file_to
git mv
๋ ์ผ์ข ์ ๋จ์ถ ๋ช ๋ น์ด์ด๋ค. Git์mv
๋ช ๋ น์ ํธ๋ฆฌํ๊ฒ ๋ช ๋ น์ ์ธ ๋ฒ ์คํํด์ฃผ๋ ๊ฒ๋ฟ์ด๋ค.
๐ฆ ์ปค๋ฐ ํ์คํ ๋ฆฌ ์กฐํํ๊ธฐโ
- Git์๋ ํ์คํ ๋ฆฌ๋ฅผ ์กฐํํ๋ ๋ช
๋ น์ด์ธ
git log
๊ฐ ์๋ค.
> git log
- ํน๋ณํ ์๊ท๋จผํธ ์์ด
git log
๋ช ๋ น์ ์คํํ๋ฉด ์ ์ฅ์์ ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ์๊ฐ์์ผ๋ก ๋ณด์ฌ์ค๋ค. ์ฆ, ๊ฐ์ฅ ์ต๊ทผ์ ์ปค๋ฐ์ด ๊ฐ์ฅ ๋จผ์ ๋์จ๋ค. - ๊ทธ๋ฆฌ๊ณ SHA-1 ์ฒดํฌ์ฌ, ์ ์ ์ด๋ฆ, ์ ์ ์ด๋ฉ์ผ, ์ปค๋ฐํ ๋ ์ง, ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ค๋ค.
commit 5de160e0d1edd5eafe5c6061b07fce8532a5416b (HEAD -> pro-git-chapter-2, origin/pro-git-chapter-2)
Author: saseungmin <dbd02169@naver.com>
Date: Tue Jan 19 23:00:00 2021 +0900
[Update] pro git Chapter 2.2
commit 2ef879e3d68d233db116e1e9d4ffce92b35d7de4
Merge: d1644d2 de4b5af
Author: saseungmin <dbd02169@naver.com>
Date: Tue Jan 19 22:04:21 2021 +0900
Merge branch 'master' of https://github.com/saseungmin/summary_of_technical_books into pro-git-chapter-2
git log
์-p
์ต์ ์ ๊ฐ ์ปค๋ฐ์diff
๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋ค.-2
์ต์ ์ ์ต๊ทผ ๋ ๊ฐ์ ๊ฒฐ๊ณผ๋ง ๋ณด์ฌ์ฃผ๋ ์ต์ ์ด๋ค.
> git log -p -2
--stat
์ต์ ์ ํ์คํ ๋ฆฌ์ ํต๊ณ๋ฅผ ๋ณด์ฌ์ค๋ค. ๊ฐ ์ปค๋ฐ์ ํต๊ณ ์ ๋ณด๋ฅผ ์กฐํํ ์ ์๋ค.- ์ด ๊ฒฐ๊ณผ์์ ์ด๋ค ํ์ผ์ด ์์ ๋๋์ง, ์ผ๋ง๋ ๋ง์ ํ์ผ์ด ๋ณ๊ฒฝ๋๋์ง, ๋ ์ผ๋ง๋ ๋ง์ ๋ผ์ธ์ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ๋์ง ๋ณด์ฌ์ค๋ค.
> git log --stat
--pretty
์ต์ ์ ํ์คํ ๋ฆฌ ๋ด์ฉ์ ๋ณด์ฌ์ค ๋ ๊ธฐ๋ณธ ํ์ ์ด์ธ์ ์ฌ๋ฌ ๊ฐ์ง ์ค ํ๋๋ฅผ ์ ํํ ์ ์๋ค.
// ๊ฐ ์ปค๋ฐ์ ํ ๋ผ์ธ์ผ๋ก ๋ณด์ฌ์ค๋ค.
> git log --pretty=oneline
// short, full, fuller ์ต์
์ ์ ๋ณด๋ฅผ ์กฐ๊ธ์ฉ ๊ฐ๊ฐํด์ ๋ณด์ฌ์ค๋ค.
> git log --pretty=short
// format ์ต์
์ ๋๋ง์ ํฌ๋งท์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค. (๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ผ๋ก ํ์ฑํ๊ณ ์ ํ ๋ ์ ์ฉํ๋ค)
> git log --pretty=format:"%h - %an, %ar : %s"
5de160e - saseungmin, 25์๊ฐ ์ : [Update] pro git Chapter 2.2
2ef879e - saseungmin, 25์๊ฐ ์ : Merge branch 'master' of https://github.com/saseungmin/summary_of_technical_books into pro-git-chapter-2
de4b5af - SeungMin, 26์๊ฐ ์ : Merge pull request #24 from saseungmin/object-oriented-chapter-7
oneline
๊ณผformat
์ต์ ์--graph
์ต์ ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด ๋ธ๋์น์ ๋จธ์ง ํ์คํ ๋ฆฌ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์์คํค ๊ทธ๋ํ๋ฅผ ์ถ๋ ฅํ๋ค.
๐ฃ ์กฐํ ์ ํ์กฐ๊ฑดโ
git log
๋ช ๋ น์ ์กฐํ ๋ฒ์๋ฅผ ์ ํํ๋ ์ต์ ๋ค์ด ์๋ค.-<n>
์ด๊ณn
์ ์ต๊ทผn
๊ฐ์ ์ปค๋ฐ์ ์๋ฏธํ๋ค.--since
๋--until
๊ฐ์ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์กฐํํ๋ ์ต์ ๋ ์๋ค.
// ์ง๋ 2์ฃผ ๋์ ๋ง๋ค์ด์ง ์ปค๋ฐ๋ค๋ง ์กฐํ
> git log --since=2.weeks
--author
์ต์ ์ผ๋ก ์ ์๋ฅผ ์ง์ ํ์ฌ ๊ฒ์ํ ์ ์๊ณ--grep
์ต์ ์ผ๋ก ์ปค๋ฐ ๋ฉ์์ง์์ ํค์๋๋ฅผ ๊ฒ์ํ ์๋ ์๋ค.- ๋ ์ต์
์ ํจ๊ป ์ฌ์ฉํ์ฌ ๋ชจ๋ ๋ง์กฑํ๋ ์ปค๋ฐ์ ์ฐพ์ผ๋ ค๋ฉด
--all-match
์ต์ ๋ ํจ๊ป ์ฌ์ฉํด์ผ ํ๋ค.
> git log --author="saseungmin" --grep="pro" --all-match
-S
๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋์์ ์ถ๊ฐ๋๊ฑฐ๋ ์ ๊ฑฐ๋ ๋ด์ฉ ์ค์ ํน์ ํ ์คํธ๊ฐ ํฌํจ๋์ด ์๋์ง๋ฅผ ๊ฒ์ํ๋ค.
> git log -S function_name
๐ฆ ๋๋๋ฆฌ๊ธฐโ
- ํ ๋ฒ ๋๋๋ฆฌ๋ฉด ๋ณต๊ตฌํ ์ ์๊ธฐ์ ์ฃผ์ํด์ผ ํ๋ค.
- ์๋ฅผ ๋ค์ด ๋ฉ์์ง๋ฅผ ์๋ชป ์ ์์ ๋ ์ปค๋ฐ์ ์์ ํด์ผ ํ ๋๊ฐ ์๋๋ฐ ์ด๋
--amend
์ต์ ์ ์ฌ์ฉํ๋ค.
> git commit --amend
- ์ด ๋ช ๋ น์ Staging Area๋ฅผ ์ฌ์ฉํ์ฌ ์ปค๋ฐํ๋ค. ๋ง์ฝ ๋ง์ง๋ง์ผ๋ก ์ปค๋ฐํ๊ณ ๋์ ์์ ํ ๊ฒ์ด ์๋ค๋ฉด ์กฐ๊ธ ์ ์ ํ ์ปค๋ฐ๊ณผ ๋ชจ๋ ๊ฒ์ด ๊ฐ๊ณ , ์ปค๋ฐ ๋ฉ์์ง๋ง ์์ ํ๋ค.
- ์ปค๋ฐ์ ํ๋๋ฐ Stageํ๋ ๊ฒ์ ๊น๋นกํ๊ณ ๋น ํธ๋ฆฐ ํ์ผ์ด ์์ผ๋ฉด ์๋์ ๊ฐ์ด ๊ณ ์น ์ ์๋ค.
> git commit -m 'initial commit'
> git add forgotten_file
> git commit --amend
- ์ฌ๊ธฐ์ ์คํํ ๋ช ๋ น์ด 3๊ฐ๋ ๋ชจ๋ ํ๋์ ์ปค๋ฐ์ผ๋ก ๊ธฐ๋ก๋๋ค. ๋ ๋ฒ์งธ ์ปค๋ฐ์ ์ฒซ ๋ฒ์งธ ์ปค๋ฐ์ ๋ฎ์ด์ด๋ค.
๐ฃ ํ์ผ ์ํ๋ฅผ Unstaged๋ก ๋ณ๊ฒฝํ๊ธฐโ
git reset HEAD <file>...
๋ฉ์์ง๋ฅผ ์ฌ์ฉํ๋ฉด Unstaged ์ํ๋ก ๋ณ๊ฒฝํ ์ ์๋ค.git reset
๋ช ๋ น์--hard
์ต์ ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด ์ํน ๋๋ ํฐ๋ฆฌ ํ์ผ๊น์ง ์์ ๋๊ธฐ ๋๋ฌธ์ ์กฐ์ฌํด์ผ ํ๋ค.hard
์ต์ ์ ์ฌ์ฉํ์ง ์์ผ๋ฉด Staging Area์ ํ์ผ๋ง ์กฐ์ํ๊ธฐ ๋๋ฌธ์ ์ํํ์ง ์๋ค.
๐ฃ Modified ํ์ผ ๋๋๋ฆฌ๊ธฐโ
- ํ์ผ์ ์์ ํ๊ณ ๋์ ๋ค์ ๋๋๋ฆฌ๊ธฐ ์ํด์๋ ์ฆ, ์ต๊ทผ ์ปค๋ฐ๋ ๋ฒ์ ์ผ๋ก ๋๋๋ฆฌ๋ ๋ฐฉ๋ฒ์
git status
์ ๋ฉ์์ง๊ฐ ์น์ ํ๊ฒ ์๋ ค์ค๋ค.
> git checkout -- README.md