1. git ์ด๊ธฐ ์ค์
1# ํ์ฌ ์์น์์ ์ง์ญ ์ ์ฅ์๋ฅผ ์์ฑ2$ git init34# ๊น ํ๊ฒฝ์์ ์ฌ์ฉ์ ์ด๋ฆ์ [์ฌ์ฉ์๋ช ]์ผ๋ก ์ง์ 5$ git config --global user.name "[์ฌ์ฉ์๋ช ]"67# ๊น ํ๊ฒฝ์์ ์ฌ์ฉ์ ์ด๋ฉ์ผ์ [์ฌ์ฉ์์ด๋ฉ์ผ๋ช ]์ผ๋ก ์ง์ 8$ git config --global user.email "[์ฌ์ฉ์์ด๋ฉ์ผ๋ช ]"
2. git ์คํ ์ด์ง
1# [ํ์ผ๋ช .ํ์ฅ์๋ช ]์ ์คํ ์ด์ง์ ์ฌ๋ฆผ2$ git add [ํ์ผ๋ช .ํ์ฅ์๋ช ]34# ์ํ๋ฅผ ํ์ธ5$ git status67# ํ์ผ add ์ทจ์8$ git restore --staged ํ์ผ๋ช910# ์ ์ฒด add ์ทจ์11$ git reset HEAD
3. git ์ปค๋ฐ
1# ์ปค๋ฐ ๋ฉ์์ง [๋ฉ์์ง๋ช ]์ ๋ถ์ฌ ์ปค๋ฐ2$ git commit -m "[๋ฉ์์ง๋ช ]"3$ git commit -am "[๋ฉ์์ง๋ช ]" # ์คํ ์ด์ง๊ณผ ์ปค๋ฐ์ ๋์์ ์งํ456# ์ต๊ทผ ์์๋๋ก ์ปค๋ฐ์ ์ทจ์7$ git reset HEAD^ # ํ์ฌ HEAD์ ์ด์ ์ปค๋ฐ์ผ๋ก ๋๋๋ฆฌ๊ธฐ8$ git reset HEAD~n # ํ์ฌ๋ก ๋ถํฐ n ๋ฒ์งธ ์ด์ ์ปค๋ฐ์ผ๋ก ๋๋๋ฆฌ๊ธฐ91011# ๋กค๋ฐฑํ ์ปค๋ฐ์ ์ง์ 12$ git reset [์ปค๋ฐ ํด์]1314# - reset์ 3๊ฐ์ง ์ต์ 15$ git reset --soft [์ปค๋ฐID] # head ๋ง ๋ฐ๋16$ git reset --mixed [์ปค๋ฐID] # staging ๋ ๊ทธ ๋๋ก ๋ฐ๋17$ git reset --hard [์ปค๋ฐID] # working๋๋ ํ ๋ฆฌ/staging ๋ชจ๋ ๊ทธ ๋๋ก ๋ฐ๊ฟ181920# ์ปค๋ฐ์ ์ญ์ ํ์ง์๊ณ ์ด์ ์ปค๋ฐ์ ์๋ก ๋ณต์ฌ ์ถ๊ฐํ๋ ์์ผ๋ก ๋กค๋ฐฑ21$ git revert [์ปค๋ฐ ํด์] # ํด๋น ์ปค๋ฐ ์ด์ ์ํ๋ก ๋๋๋ฆฐ๋ค๋ผ๋ ๋ช ๋ น222324# ์ปค๋ฐ ์์ ํ๋ ๋ฒ25# ... ํ์ผ ์์ ํ ๋ค26$ git add .27$ git commit --amend # ์ต์ ์ปค๋ฐ ์์
4. git ์ด๋ ฅ ํ์ธ
1# ์ปค๋ฐ ๋ด์ญ ํ์ธ2$ git log # ์ ์ฒด ์ด๋ ฅ์ ๋ณด์ฌ์ค๋ค.3$ git shortlog4$ git log --oneline # ์ปค๋ฐ๊ณผ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์กฐํ56$ git log -p # ์ด๋ ฅ์ ๋ณด์ฌ์ค ๋, ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ ๋ณด์ฌ์ค๋ค.7$ git log [filename] # ํน์ ํ์ผ์ ๋ํ ์ด๋ ฅ์ ๋ณด์ฌ์ค๋ค.8$ git log -p [filename] # ํน์ ํ์ผ์ ์ด๋ ฅ๊ณผ ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ค๋ค.910$ git log --stat # ์ปค๋ฐ๋ง๋ค ํ์ผ์ ์ถ๊ฐ/์ญ์ ๋ ํต๊ณ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ค11$ git log --graph # ๋ธ๋์น ๋ถ๊ธฐ ๋ฐ ๋ณํฉ๋ด์ฉ์ ์์คํค ๊ทธ๋ํ๋ก ๋ณด์ฌ์ค121314# ํน์ ์ปค๋ฐ ๋ด์ญ ํ์ธ15$ git show [์ปค๋ฐ id]161718# ์ต๊ทผ ๋ฒ์ ๊ณผ ์์ ํด๋์ ์์ ํ์ผ ์ฌ์ด์ ์ฐจ์ด๋ฅผ ์ถ๋ ฅ19$ git diff # modified ์ํ์ file๊ณผ ๋ง์ง๋ง commit ๋น๊ต20$ git diff --staged # staged ์ํ์ file๊ณผ ๋ง์ง๋ง commit ๋น๊ต21$ git diff --color-words # ๋ณ๊ฒฝ์ฌํญ์ color ํํ๊ฒ ๋น๊ต22$ git diff [๋ธ๋์น์ด๋ฆ] # ํ์ฌ๋ธ๋์น์ ์ ํ๋ ๋ธ๋์น์ ์ฐจ์ด์ ๋น๊ต23$ git diff [์ด์ ์ปค๋ฐ id] [์ดํ์ปค๋ฐ id] # ์ปค๋ฐ ๋น๊ต
| git log ๋ช ๋ น์ด ์์ | ์ค๋ช |
|---|---|
| git log | HEAD์ ๊ด๋ จ๋ commit๋ค์ด ์์ธํ๊ฒ ๋์ด |
| git log โoneline | ๊ฐ๋จํ commit ํด์์ ์ ๋ชฉ๋ง ๋ณด๊ณ ์ถ์ ๋ |
| git log โoneline โgraph โdecorate | HEAD์ ๊ด๋ จ๋ commit๋ค์ ์กฐ๊ธ ๋ ์์ธํ ๋ณด๊ณ ์ถ์ ๋ |
| git log โoneline โgraph โall โdecorate | ๋ชจ๋ branch๋ค์ ๋ณด๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ๋ช ๋ น์ด |
| git log โoneline -n7 | ๋ด branch์ ์ต์ commit์ 7๊ฐ๋ง ๋ณด๊ณ ์ถ์ ๋ ์ฌ์ฉ |
5. ์๊ฒฉ ์ ์ฅ์
1# ์๊ฒฉ ์ ์ฅ์์ ์ฐ๊ฒฐ2$ git remote add origin [github ๋ ํฌ์ง ์ฃผ์]34# ์ต์ ์ข ๋ฅ ๋ณด๊ธฐ5$ git remote --help67# ์ถ๊ฐํ ์๊ฒฉ์ ์ฅ์์ ๋ชฉ๋ก ํ์ธ8$ git remote9$ git remote -v # ์์ธํ1011# ํน์ ์๊ฒฉ ์ ์ฅ์์ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์๋ค.12$ git remote show ์ด๋ฆ1314# ์๊ฒฉ์ ์ฅ์ ์ด๋ฆ ๋ณ๊ฒฝ15$ git remote rename ๊ธฐ์กด์ด๋ฆ ๋ณ๊ฒฝํ ์ด๋ฆ1617# ์๊ฒฉ์ ์ฅ์๋ฅผ ์ ๊ฑฐ18$ git remote rm ์ด๋ฆ
1# ์ง์ญ ์ ์ฅ์์ ์ปค๋ฐ์ ๋งจ ์ฒ์ ์๊ฒฉ ์ ์ฅ์์ ์ฌ๋ฆฌ๋ ๊ฒฝ์ฐ2$ git push -u origin master34# -u๋ก ๋ฑ๋กํ ํ์ ์ง์ญ ์ ์ฅ์์ ์ปค๋ฐ์ ์๊ฒฉ ์ ์ฅ์์ ์ฌ๋ฆฌ๋ ๊ฒฝ์ฐ(์ ๋ก๋)5$ git push6$ git push origin master789# ์๊ฒฉ ์ ์ฅ์์ ์ปค๋ฐ์ ์ง์ญ ์ ์ฅ์๋ก ๊ฐ์ ธ์ด10$ git pull origin master1112# ์๊ฒฉ ์ ์ฅ์ ๋ณต์ ํ๊ธฐ13$ git clone [์๊ฒฉ ์ ์ฅ์ ์ฃผ์]1415# ์๊ฒฉ ์ ์ฅ์์ ์ปค๋ฐ์ ๊ฐ์ ธ์ค๊ธฐ๋ง ํ๊ณ mergeํ์ง ์๋๋ค16$ git fetch17# ์ดํ์ diff ๋ก ๋น๊ต18$ git diff test origin/test # ๋ธ๋์น ์ด๋ฆ์ด test์ผ ๊ฒฝ์ฐ ์์1920# ์๊ฒฉ์ ์ฅ์ ์ญ์ (๋๊ธฐ)21$ git remote remove origin
6. ์ ์ฅ์ ํ์ผ ์ญ์
1# ๋ก์ปฌ์ ์ฅ์ ์๊ฒฉ์ ์ฅ์ ๋๋ค ํ์ผ ์ญ์ 2$ git rm [filename]34# ์๊ฒฉ์ ์ฅ์ ํ์ผ๋ง ์ญ์ . ๋ก์ปฌ์ ์ฅ์ ํ์ผ์ ๋ ๋5$ git rm --cached [filename]
7. git branch
1# ๋ธ๋์น ํ์ธ2$ git branch34# ๋ธ๋์น ์ถ๊ฐ / ์ญ์ 5$ git branch [branch name]6$ git branch -d [branch name] # -delete78# ๋ธ๋์น๋ก ์ด๋9$ git switch [branch name]10$ git checkout [branch name]1112# ๋ธ๋์น ์ถ๊ฐํ๊ณ ๋ฐ๋ก ์ด๋13$ git switch -c [branch name]14$ git checkout -b [branch name]151617# ํ์ฌ ๋ธ๋์น์์ ๋ค๋ฅธ ๋ธ๋์น๋ฅผ merge18$ git merge [branch name]
8. git cherry-pick
1# ๋ง์ผ ๋ด๊ฐ X ๋ธ๋์น์ ์๊ณ2# ๋ธ๋์น Y์ ์ปค๋ฐ ์ค 76ae30ef์ 13af32cc๋ง ๊ณจ๋ผ ํ์ฌ ๋ธ๋์น์ธ X์ ์ ์ฉํ๊ณ ์ถ์๋3$ git cherry-pick 76ae30ef 13af32cc
9. git stash
1# staged, modified ์ํ์ ํ์ผ์ ์ ์ฅ2$ git stash34# stash๋ก ์ ์ฅํ ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅ5$ git stash list67# ๊ฐ์ฅ ์ต๊ทผ์ ์ ์ฅํ stash๋ฅผ ๋ฐ์8$ git stash apply9$ git stash apply stash@{1} # ์ง์ ํ stash๋ฅผ ๋ฐ์1011# ์ง์ ํ stash๋ฅผ ์ญ์ 12$ git stash drop stash@{1}1314# stash๋ฅผ ๋ฐ์ํ๊ณ ์๋ ์ญ์ 15$ git stash pop
10. git tag
light weight ํ๊ทธ: ๋จ์ ์ปค๋ฐ ํ๊ทธ์ฉ. ์ปค๋ฐ์ ๋ฐ๋ก ๊ฐ๋ฆฌํดannotated ํ๊ทธ: ํ๊ทธ ๋ฉ์ธ์ง๋ ์ฒจ๋ถํ ์ ์์ด ์์ฒด ํด์๊ฐ์ ๊ฐ์ง. ^์ด ์ปค๋ฐ์ ๊ฐ๋ฆฌํด
1# ํ๊ทธ ์ถ๊ฐ2$ git tag [ํ๊ทธ์ด๋ฆ]3$ git tag [ํ๊ทธ์ด๋ฆ] [์ปค๋ฐ๋ฒํธ] # ํน์ ํด์ฌ์ ํ๊ทธ ์ถ๊ฐ4$ git tag -a [ํ๊ทธ์ด๋ฆ] [์ปค๋ฐ๋ฒํธ] # ํน์ ํด์ฌ์ annotated ํ๊ทธ ์ถ๊ฐ567# ํ๊ทธ ์กฐํ8$ git tag9$ git tag -l 'v1.*' # ์์ผ๋์นด๋ ํจํด์ผ๋ก ๊ฒ์์กฐํ10$ git show [ํ๊ทธ์ด๋ฆ] # ํน์ ํ๊ทธ ์กฐํ11$ git show-ref --tags # ํด์ฌ๊ฐ๊ณผ ํ๊ทธ ์กฐํ
11. git blame
1# git ํ๋ก์ ํธ์์ ์ด๋ค ์ฝ๋๋ฅผ ๋๊ฐ ์์ ํ๋์ง, ์ด๋ค commit์ผ๋ก ์์ ์ด ๋์๋์ง ๊ถ๊ธํ ๋23# ํด๋น ํ์ผ์ ๋ํ ๋ชจ๋ ์์ ๋ด์ญ4$ git blame <ํ์ผ๋ช >56# author name๊ณผ timestamp๋ ์ถ๋ ฅํ์ง ์์.7$ git blame -s <ํ์ผ๋ช >89# description๊ณผ ์์ ์ฌํญ์ ๋ณด์ฌ์ค10$ git show <์ปค๋ฐ๋ฒํธ>1112# ํ์ผ๋ด์ฉ์ start๋ถํฐ end ๋ผ์ธ๊น์ง์ ์์ ๋ด์ญ๋ง ๋ณด์ฌ์ค13$ git blame -L <start,end> <ํ์ผ๋ช >
12. ๊ธฐํ
1$ git checkout -b "MCB-##-task-name"23# ์ด ์ ์ ์์ ํ๊ณ ์๋ ๊ฒ๋ค์ git add . git commit -m ...4$ git checkout main5$ git pull origin main6$ git checkout MDB-๋ธ๋์น๋ช7$ git merge main
13. ์ปค๋ฐ๋ฉ์์ง ๊ท์น
- Feat : ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ
- Fix : ๋ฒ๊ทธ ์์
- Style : ์ฝ๋ ์์ ๋ณ๊ฒฝ
- Refactor : ์ฝ๋ ๋ฆฌํฉํ ๋ง
- Test : ํ ์คํธ ์ฝ๋ ์์
- Docs : ๋ฌธ์ ์์