๐ฅ๋ฒ์ ํ์ธ
$ git --version
๐ฅconfig
core.autocrlf
$ git config –global core.autocrlf true
์ปค๋ฐํ ๋ CRLF๋ฅผ LF๋ก ์๋ ๋ณํํ๊ณ , ์ฒดํฌ์์ ํ ๋์๋ ๋ฐ๋๋ก LF๋ฅผ CRLF๋ก ๋ณํํ์ฌ ๋ฆฌํด
์๋์ฐ์์๋ง ์ฌ์ฉ
$ git config –global core.autocrlf input
์ปค๋ฐํ ๋ CRLF๋ฅผ LF๋ก ๋ณํ
๋ฆฌ๋ ์ค์ ๋งฅ์์ ์ฌ์ฉ
$ git config –global core.autocrlf false
default ์ค์
CRLF ๋ฅผ ์ผ๋ LF ๋ฅผ ์ผ๋ git ์ ์๊ดํ์ง ์๊ณ ํ์ผ ๊ทธ๋๋ก checkin, checkout
์ฌ์ฉ์ ์ ๋ณด ์ค์
$ git config --global user.name "(๋ณธ์ธ ์ด๋ฆ)"
$ git config --global user.email "(๋ณธ์ธ ์ด๋ฉ์ผ)"
ํ์ธ
$ git config --global user.name
$ git config --global user.email
๊ธฐ๋ณธ ๋ธ๋์น๋ช ๋ณ๊ฒฝ
$ git config --global init.defaultBranch main
๐ฅinit
git ๊ด๋ฆฌ ์์
$ git init
๐ฅstatus
ํ์ผ ์ํ ํ์ธ
$ git status
๐ฅadd
working directory์ ์๋ ํน์ ํ์ผ staging area๋ก ์ด๋
$ git add (ํ์ผ๋ช
)
working directory์ ์๋ ๋ชจ๋ ํ์ผ staging area๋ก ์ด๋
$ git add .
๐ฅcommit
vi ๋ชจ๋
$ git commit
Vi ์ ๋ ฅ ๋ชจ๋๋ก ์ง์ (Vim ์ฐธ๊ณ )
commit ๋ฉ์์ง์ ํจ๊ป
git commit -m "(์ปค๋ฐ ๋ฉ์ธ์ง)"
add์ commit ํ๋ฒ์
git commit -am "(์ปค๋ฐ ๋ฉ์ธ์ง)"
์๋ก ์ถ๊ฐ๋(untracked) ํ์ผ์ด ์์ ๋๋ง ๊ฐ๋ฅ
๐ฅlog
ํ์ฌ ์์นํ ๋ธ๋์์์ ๋ด์ญ๋ง ํ์ธ
$ git log
์ฌ๋ฌ ๋ธ๋์น์ ๋ด์ญ ํ์ธ
$ git log --all --decorate --oneline --graph
๐ฅreset
ํน์ ์์ ์ผ๋ก ๋์๊ฐ๊ธฐ
$ git reset --(option) (๋์๊ฐ ์ปค๋ฐ ํด์)
option:
--soft : repository์์ staging area๋ก ์ด๋
--mixed (default) : repository์์ working directory๋ก ์ด๋
--hard: ์์ ์ฌํญ ์์ ํ ์ญ์
reset ํ๊ธฐ ์ ์์ ์ผ๋ก ๋ณต์
$ git reset --(option)
HEAD๋ฅผ ์ด์ฉํด ์ํ๋ ๋จ๊ณ๋ก reset
$ git reset HEAD~2 --hard
๐ฅrevert
$ git revert (๋๋๋ฆด ์ปค๋ฐ ํด์)
$ git revert --no-commit (๋๋๋ฆด ์ปค๋ฐ ํด์)
์ปค๋ฐํ์ง ์๊ณ revert
๋ค๋ฅธ ์์ ์ ์ถ๊ฐํ ๋ค์ ์ํ๋ ์์ ์ ํจ๊ป ์ปค๋ฐํ๋ค.
๐ฅrestore
ํ์ผ์ staging area์์ working directory๋ก ์ด๋
git restore --staged (ํ์ผ๋ช
)
ํ์ผ์ working directory์์ ์ ๊ฑฐ
git restore (ํ์ผ๋ช
)
๐ฅbranch
๋ธ๋์น ์์ฑ
$ git branch (๋ธ๋์น๋ช
)
๋ธ๋์น ๋ชฉ๋ก ํ์ธ (๋ก์ปฌ๋ง)
$ git branch
๋ธ๋์น ๋ชฉ๋ก ๋ชจ๋ ํ์ธ (๋ก์ปฌ, ์๊ฒฉ)
$ git branch --all
๋ธ๋์น ์ญ์
$ git branch -d (์ญ์ ํ ๋ธ๋์น๋ช
)
๋ธ๋์น ๊ฐ์ ์ญ์
$ git branch -D (๊ฐ์ ์ญ์ ํ ๋ธ๋์น๋ช
)
๋ธ๋์น ์ด๋ฆ ๋ฐ๊พธ๊ธฐ
$ git branch -m (๊ธฐ์กด ๋ธ๋์น๋ช
) (์ ๋ธ๋์น๋ช
)
๐ฅswitch
๋ธ๋์น ์ด๋
$ git switch (์ด๋ํ ๋ธ๋์น๋ช
)
๋ธ๋์น ์์ฑ๊ณผ ๋์์ ์ด๋
$ git switch -c (์ ๋ธ๋์น๋ช
)
๋ก์ปฌ์ ์๊ฒฉ๊ณผ ๊ฐ์ ์ด๋ฆ ๋ธ๋์น ์์ฑํ์ฌ ์ฐ๊ฒฐ ํ switch
git switch -t origin/(๋ธ๋์น๋ช
)
๐ฅmerge
$ git merge (๋จธ์งํ ๋ธ๋์น๋ช
)
์ง์ ํ ๋ธ๋์น๋ฅผ ํ์ฌ ๋ธ๋์น๋ก merge
merge๋ ํ๋์ ์ปค๋ฐ์ด๋ฏ๋ก mergeํ๊ธฐ ์ ํด๋น ๋ธ๋์น์ ๋ง์ง๋ง ์์ ์ผ๋ก resetํด์ ๋๋๋ฆฌ๊ธฐ ๊ฐ๋ฅํ๋ค.
Ex.
ํ์ฌ ๋ธ๋์น: main
$ git merge feature/post
feature/post ๋ธ๋์น๋ฅผ main ๋ธ๋์น๋ก merge
$ git merge --abort
merge ์ ์ถฉ๋ ๋ฐ์ํ ๊ฒฝ์ฐ ์ถฉ๋ ํด๊ฒฐ์ด ์ด๋ ค์ธ ๋ merge ์ค๋จ
๐ฅrebase
$ git rebase (์ฌ๋ฐฐ์น ๊ฒฐ๊ณผ ๋ธ๋์น๋ช
)
merge์ ๋ฐ๋
Ex.
ํ์ฌ ๋ธ๋์น: feature/post
$ git rebase main
feature/post ๋ธ๋์น๋ฅผ main ๋ธ๋์น๋ก rebase
์ถฉ๋ ์ ํด๊ฒฐ ์ด๋ ค์ธ ๊ฒฝ์ฐ rebase ์ค๋จ
$ git rebase --abort
์ถฉ๋ ์ ํด๊ฒฐ ๊ฐ๋ฅํ ๊ฒฝ์ฐ
1. ์ถฉ๋ ๋ถ๋ถ์ ์์ ํ๋ค git add . ํ๋ค.
2. rebase ๊ณ์
git rebase --continue
์ถฉ๋์ด ๋ชจ๋ ํด๊ฒฐ๋ ๋๊น์ง 1,2๋ฅผ ๋ฐ๋ณตํ๋ค.
๐ฅremote
github repository ์์ฑ ํ ๋ก์ปฌ๊ณผ ์๊ฒฉ ์ ์ฅ์ ์ฐ๊ฒฐ
$ git remote add (์๊ฒฉ ์ด๋ฆ) (์๊ฒฉ ์ ์ฅ์ ์ฃผ์)
์๊ฒฉ ์ ์ฅ์์ ์ฐ๊ฒฐํ ๋ก์ปฌ ์์น์์ ์ํ
์๊ฒฉ ์ ์ฅ์ ์ด๋ฆ์ ํํ orgin์ ์ฌ์ฉ
$ git branch -M main
$ git push -u origin main
๋ก์ปฌ ์ ์ฅ์์ ์ปค๋ฐ ๋ด์ญ๋ค ์๊ฒฉ์ผ๋ก push
-u ๋๋ --set-upstream : ํ์ฌ ๋ธ๋์น์ ๋ช ์๋ ์๊ฒฉ ๋ธ๋์น ๊ธฐ๋ณธ ์ฐ๊ฒฐ
์๊ฒฉ ๋ชฉ๋ก ํ์ธ
$ git remote
$ git remote -v
์๊ฒฉ ์ง์ฐ๊ธฐ
git remote remove (origin ๋ฑ ์๊ฒฉ ์ด๋ฆ)
๋ก์ปฌ ํ๋ก์ ํธ์ ์ฐ๊ฒฐ๋ง ์์ ๋ ๊ฒ์ผ๋ก GitHub์ ๋ ํฌ์งํ ๋ฆฌ๋ ์ง์์ง์ง ์๋๋ค.
๐ฅclone
์๊ฒฉ ์ ์ฅ์ clone
git clone (์๊ฒฉ ์ ์ฅ์ ์ฃผ์)
git๊น์ง ๋ชจ๋ clone
๐ฅpush
์๊ฒฉ์ ์ปค๋ฐ ์ฌ๋ฆฌ๊ธฐ
$ git push
๊ฐ์ push
$ git push --force
์๊ฒฉ ๋ธ๋์น ์์ฑ ํ push
git push -u (์๊ฒฉ ์ด๋ฆ) (๋ธ๋์น๋ช
)
์๊ฒฉ์ ๋ก์ปฌ๊ณผ ๋์ผ ๋ธ๋์น ์์ฑํ๋ฉด์ push
์๊ฒฉ ๋ธ๋์น ์ญ์
$ git push (์๊ฒฉ ์ด๋ฆ) --delete (์๊ฒฉ์ ๋ธ๋์น๋ช
)
๐ฅpull
์๊ฒฉ์ ์ปค๋ฐ ๋น๊ฒจ์ค๊ธฐ
$ git pull
push ํ ๊ฒ์ด ์๋๋ฐ pull ํด์ผํ๋ ์ํฉ - mergeํ๊ธฐ
$ git pull --no-rebase
push ํ ๊ฒ์ด ์๋๋ฐ pull ํด์ผํ๋ ์ํฉ - rebaseํ๊ธฐ
$ git pull --rebase
๐ฅfetch
์๊ฒฉ ๋ณ๊ฒฝ์ฌํญ ํ์ธ
$ git fetch
fetch: ์๊ฒฉ ์ ์ฅ์์ ์ต์ ์ปค๋ฐ์ ๋ก์ปฌ๋ก ๊ฐ์ ธ์ค๊ธฐ๋ง ํ๋ค.
pull: ์๊ฒฉ ์ ์ฅ์์ ์ต์ ์ปค๋ฐ์ ๋ก์ปฌ๋ก ๊ฐ์ ธ์ merge๋๋ rebaseํ๋ค.
๐ฅrm
$ git rm (ํ์ผ๋ช
)
ํ์ผ์ ์ญ์ ๊ฐ staging area์ ์๋ค.
๐ฅmv
$ git mv (ํ์ผ๋ช
) (๋ณ๊ฒฝํ ํ์ผ๋ช
)
ํ์ผ๋ช ๋ณ๊ฒฝ์ด staging area์ ์๋ค.
๐ฅcheckout
HEAD ์ ๋ค ์ด๋ํ๊ธฐ
$ git checkout HEAD^
$ git checkout HEAD~~
$ git checkout HEAD^2
HEAD : ํ์ฌ ๋ธ๋์น์ ๊ฐ์ฅ ๋ ์ง์
^ ๋๋ ~์ ์ด์ฉํ์ฌ ๊ฐฏ์ ๋งํผ ์ด์ ์ผ๋ก ์ด๋
์๋ก์ด ์ต๋ช ์ ๋ธ๋์น๋ฅผ ๋ง๋ ๋ค.
ํน์ ์ง์ ์์ ์๋ก์ด ๋ธ๋์น ๋ง๋ค ์ ์์
commit ํด์๋ฅผ ์ด์ฉํด ์ด๋
$ git checkout (์ปค๋ฐํด์)
์ด๋์ ํ๋จ๊ณ ๋๋๋ฆฌ๊ธฐ
$ git checkout -
์๊ฒฉ ๋ธ๋์น๋ก ์ด๋
$ git checkout (์๊ฒฉ ์ด๋ฆ)/(๋ธ๋์น๋ช
)
$ git checkout origin/main
$ git checkout origin/new-branch
git fetchํ git checkout origin/main์ผ๋ก ํ๋ฉด ์๊ฒฉ ๋ธ๋์น์์ ๋ณ๊ฒฝ์ฌํญ์ ํ์ธํ ์ ์๋ค.
Source
https://www.inflearn.com/course/%EC%A0%9C%EB%8C%80%EB%A1%9C-%ED%8C%8C%EB%8A%94-%EA%B9%83/dashboard