- Published on
Git Cheat Sheet
- Author
- Name
- yceffort
์ฌ๊ธฐ์ ๊ธฐ ์ ๋ง๋ค์ด์ ธ ์๋ Git Cheat Sheet๋ฅผ ๋ชจ์์ ํ๊ธ๋ก ๋ฒ์ญํด ๋ณด์๋ค. ์์ฑ์ []
๋ ์ ๊ฑฐํด์ผ ํ๋ค.
Table of Contents
- SETUP
- SETUP & INIT
- STAGE & SNAPSHOT
- BRANCH & MERGE
- INSPECT & COMPARE
- TRACKING PATH CHANGES
- IGNORING PATTERNS
- REWRITE HISTORY
- TEMPORARY COMMITS
SETUP
git config --global user.name "[firstname lastname]"
: git์์ ์ฌ์ฉํ ๊ธ๋ก๋ฒ ์ด๋ฆ์ ์ค์ ํ๋ค.git config --global user.email "[valid-email]"
: git์์ ์ฌ์ฉํ ๊ธ๋ก๋ฒ ์ด๋ฉ์ผ์ ์ค์ ํ๋ค.git config --global color.ui auto
: git ๋ฆฌ๋ทฐ๋ฅผ ์ฝ๊ฒํ ์ ์๋๋ก ์ปค๋งจ๋๋ผ์ธ์ ์๋์ผ๋ก ์๊น์ ์น ํด์ค๋ค.
SETUP & INIT
git init
: git repository ์ด๊ธฐํgit clone [url]
: URL์ ํตํด์ git repository๋ฅผ ํด๋ก ํ๋ค.
STAGE & SNAPSHOT
git status
: ์์ ์ค์ธ ๋๋ ํ ๋ฆฌ์์ ๋ณ๊ฒฝ๋ ํ์ผ ๋ชฉ๋ก์ ๋ณด์ฌ์ค๋ค.git add [file]
: ๋ค์ ์ปค๋ฐ์ ์ถ๊ฐ๋ ํ์ผ (์คํ ์ด์งํ )์ ์ถ๊ฐํ๋ค.git reset [file]
: ์์ ์ค์ธ ๋๋ ํ ๋ฆฌ์์ ์คํ ์ด์ง ๋ ํ์ผ์ ๋ค์ unstage ์ํ๋ก ๋๋๋ฆฐ๋ค.git reset --hard [file]
: ์คํ ์ด์ง ์์ญ๊ณผ ์์ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฐ์ฅ ์ต๊ทผ ์ปค๋ฐ๊ณผ ์ผ์นํ๋๋ก ๋ฆฌ์ ํ๊ณ , ์์ ๋๋ ํ ๋ฆฌ์ ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ์ ์์ด๋ฒ๋ฆฐ๋ค.git reset [commit]
: ํ์ฌ ๋ธ๋์น๋ฅผ ์ปค๋ฐID ์ชฝ์ผ๋ก ๋๋๋ฆฌ๊ณ , ๋ชจ๋ ์คํ ์ด์ง๋์ด ์๋ ๋ณ๊ฒฝ์ฌํญ์ ๋๋๋ฆฌ์ง๋ง, ์์ ์ค์ธ ๋ด์ฉ์ ๋๋๋ฆฌ์ง ์๋๋ค.git reset --hard [commit]
: ์คํ ์ด์ง์์ญ๊ณผ ์์ ์ค์ธ ์์ญ ๋ชจ๋๋ฅผ ๋ฆฌ์ ํด ๋ฒ๋ฆฐ๋ค. ์ปค๋ฐ๋์ง ์๋ ๋ณ๊ฒฝ๋ด์ญ์ ๋ชจ๋ ๋ ๋ผ๊ฐ๊ณ , commit ์ดํ์ ๋ด์ฉ๋ ๋ชจ๋ ๋ ๋ผ๊ฐ๋ค.git diff
: ์คํ ์ด์ง๋์ง ์์ ํ์ผ๋ค ์ค์์ diff๋ฅผ ํ์ธํ๋ค.git diff --staged
: ์คํ ์ด์ง๋ ํ์ผ๋ค ์ค์์ diff๋ฅผ ํ์ธํ๋ค.git commit -m "[message]"
: ์คํ ์ด์ง๋ ํ์ผ์ ๋ฉ์์ง์ ํจ๊ป ์ปค๋ฐํ๋ค.git commit --amend
: ๊ฐ์ฅ ๋ง์ง๋ง ์ปค๋ฐ์ ํ์ฌ ์คํ ์ด์ง๋์ด ์๋ ๋ด์ฉ๊ฐ ๋ง์ง๋ง ์ปค๋ฐ์ ๋ณํฉํ๋ค. ์คํ ์ด์ง๊ณผ ๋ณ๋๋ก ์ฌ์ฉํ๋ค๋ฉด, ๋จ์ํ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ๋ณ๊ฒฝํ๋ ์ฉ๋๋ก๋ ์ฌ์ฉํ ์ ์๋ค.
BRANCH & MERGE
git branch
: ๋ธ๋์น ๋ชฉ๋ก์ ๋ณด์ฌ์ค๋ค.*
์ด ๋ ์๋ ๋ธ๋์น๋ ํ์ฌ ํ์ฑํ๋ ๋ธ๋์น๋ฅผ ์๋ฏธํ๋ค.git branch [branch-name]
: ํ์ฌ ์ปค๋ฐ์ ๊ธฐ์ค์ผ๋ก ์๋ก์ด ๋ธ๋์น๋ฅผ ๋ง๋ ๋ค.git checkout [branch-name]
: ๋ค๋ฅธ ๋ธ๋์น๋ก ๋ณ๊ฒฝ ํ๋ค์, ํด๋น ๋ด์ฉ์ ์์ ์ค์ธ ๋ธ๋์น๋ก ๊ฐ์ ธ์จ๋ค.git merge [branch-name]
: ํน์ ๋ธ๋์น์ ์์ ๋ด์ฉ์ ํ์ฌ ๋ธ๋์น์ ๋ณํฉํ๋ค.
INSPECT & COMPARE
git log
: ํ์ฌ ๋ธ๋์น์ ๋ชจ๋ ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ๋ณด์ฌ์ค๋ค.git log [branchB]..[branchA]
: ๋ธ๋์นA์ ์ปค๋ฐ์ค ๋ธ๋์นB์ ์๋ ํ์คํ ๋ฆฌ๋ฅผ ๋ณด์ฌ์ค๋ค.git log --follow [file]
: ํ์ผ๋ช ๋ณ๊ฒฝ๊น์ง ํฌํจํด์ ํด๋น ํ์ผ์ ์ปค๋ฐ์ ๋ณด์ฌ์ค๋ค.git diff [branchB]...[branchA]
: ๋ธ๋์นA๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ธ๋์นB์ ๋ค๋ฅธ ๋ด์ฉ์ ๋ณด์ฌ์ค๋ค.git show [SHA]
: ์ฌ๋์ด ์ฝ์ ์ ์๋ ํํ๋ก ๋ชจ๋ ์ค๋ธ์ ํธ๋ฅผ ๋ณด์ฌ์ค๋ค.
TRACKING PATH CHANGES
git rm [file]
: ํด๋น ํ์ผ์ ์ญ์ ํ๊ณ , ์คํ ์ด์ง์์๋ ์ด๋ฅผ ์ ๊ฑฐํ๋ค.git mv [existing-path] [new-path]
: ํ์ผ ์์น๋ฅผ ๋ณ๊ฒฝํ๊ณ ์คํ ์ด์ง์ ์ด๋ฅผ ๊ธฐ๋กํ๋ค.git log --stat -M
: ๊ฒฝ๋ก๊ฐ ์ด๋ํ ๋ชจ๋ ์ปค๋ฐ ๋ก๊ทธ๋ฅผ ๋ณด์ฌ์ค๋ค.
IGNORING PATTERNS
logs/
*.notes
pattern*/
git์ด ๋ฌด์ํ๊ธฐ๋ฅผ ์ํ๋ ํ์ผ๋ค์ ํจํด์ .gitignore
์ ๊ธฐ๋กํด ๋๋ค.
git config --global core.excludesfile [file]
: ์์คํ ๋ ๋ฒจ์์ ๋ชจ๋ ๋ ํ์งํ ๋ฆฌ์์ ๋ฌด์ํ ํ์ผ์ ์ค์ ํ๋ค.git remote add [alias] [url]
: git URL์ ๋ณ์นญ๊ณผ ํจ๊ป ์ถ๊ฐํ๋ค.git fetch [alias]
: Git remote์์ ๋ชจ๋ ๋ธ๋์น๋ฅผ ํจ์นํ๋ค.git merge [alias]/[branch]
: ํ์ฌ ๋ธ๋์น์๋ค๊ฐ ๋ฆฌ๋ชจํธ ๋ธ๋์น์ ์ต์ ๋ด์ฉ์ ๋ณํฉํ๋ค.git push [alias] [branch]
: ๋ก์ปฌ ๋ธ๋์น ์ปค๋ฐ์ ๋ฆฌ๋ชจํธ ๋ ํ์งํ ๋ฆฌ์ ๋ธ๋์น์ ์ ์กํ๋ค.git pull
: ๋ฆฌ๋ชจํธ ๋ธ๋์น์์ ์ถ์ ํ๊ณ ์๋ ๋ชจ๋ ์ปค๋ฐ์ ํจ์นํ๊ณ ๋ณํฉํ์ฌ ์ต์ ํ ํ๋ค.
REWRITE HISTORY
git rebase [branch]
: ํ์ฌ ๋ธ๋์น๋ณด๋ค ์์์๋ ๋ชจ๋ ๋ณ๊ฒฝ ๋ด์ฉ (์ปค๋ฐ)์ ๋ก๊ฒจ์์ ์ ์ฉํ๋ค.git reset --hard [commit]
: ์คํ ์ด์ง ์์ญ์ ์๋ ๊ฒ์ ๋ชจ๋ ํด๋ฆฌ์ดํ๊ณ , ํน์ ์ปค๋ฐ ๋ฒ์ ์ผ๋ก ๋ชจ๋ ์์ ๋ด์ฉ์ ๋ฎ์ด์จ๋ฒ๋ฆฐ๋ค.
TEMPORARY COMMITS
git stash
: ํ์ฌ ์์ ๋๊ฑฐ๋ ์คํ ์ด์ง๋์ด ์๋ ๋ณ๊ฒฝ์ฌํญ์ ๋ชจ๋ ์ ์ฅํ๋ค.git stash list
: stack ์์๋ก ๋์ด ์๋ ๋ชจ๋ stash ๋ชฉ๋ก์ ๋ณด์ฌ์ค๋ค.git stash pop
: stash stack ์ต์๋จ์ ์๋ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํ๋ค.git stash drop
: stash stack ์ต์๋จ์ stash๋ฅผ ์ ๊ฑฐํ๋ค.