git
git์ด ์กด์ฌํ๋ ์ด์
version
backup
collaborate
๊ฐ๋
Working Tree - ํ์ผ์ ๋ง๋ค๊ณ ์์ ํ์ง๋ง ์ ์ฅ์์ X
Staging Area - ๋ฒ์ ์ผ๋ก ๋ง๋ค๊ณ ์ถ์ ํ์ผ๋ค์ ๋ฃ์ด๋๋ ๊ณณ
Repository - ์ ์ฅ์
๋ฒ์ ๊ด๋ฆฌ ๋ช
๋ น์ด
์ด๊ธฐ ์ค์
## Initialized empty Git repository in /Users/...
git init .
## ํ์ผ ๋ง๋ค๊ธฐ
nano hello1.txt
touch hello2.txt
## ํ์ผ ๋ด์ฉํ์ธํ๊ธฐ
cat hello1.txt
log๋ณ ํ์ผ์ ๋ณด๋ ๋ฐฉ๋ฒ
## For full path names of changed files:
git log --name-only
## For full path names and status of changed files:
git log --name-status
## For abbreviated pathnames and a diffstat of changed files:
git log --stat
diff ์ฐจ์ด์ ํ์ธ
## ์ฐจ์ด์ ์ ํ์
ํ ์ ์๋ค.
git diff
checkout ์๊ฐ์ฌํ
## ์ฌ๋ผ์ง๋๊ฒ ์๋๋ค. ์ด์ ํ์ผ๋ก ๋๋๋ ค์ ํ์ธํ๊ธฐ
git checkout <id>
## ์ต์ ๋ฒ์ ์ผ๋ก ๋๋๋ฆฌ๊ธฐ
git checkout master
commit -am
## add์ commit์ ํ๋ฒ์ ํ๊ธฐ
## ์ต์ด๋ก ํ๋ฒ์ add๋ฅผ ํ ํ ํธ๋ํน ์ํ์ผ๋๋ง ๋๋ค.
git commit -am "Message"
git commit ์์ ํ๊ธฐ
git commit --amend
reset ๋ฒ์ ์ผ๋ก resetํ๊ธฐ
## ํ์ฌ ์์
ํ ๋ด์ฉ์ stage์ ์ฌ๋ฆฌ์ง ์๊ณ Repository ๋ฒ์ ์ผ๋ก ๋๋๋ฆฌ๊ธฐ
git reset --hard
## ์ด์ ๋ฒ์ ์ผ๋ก ๋๋๋ฆฌ๊ณ ์ถ๋ค๋ฉด
git reset --hard <id>
## ์์ ํ๊ณ ์๋ ๋ถ๋ถ์ ์ด๋ฆฌ๊ณ ๋๋๋ฆฌ๊ณ ์ถ๋ค๋ฉด soft mixed
git reset --soft <id>
revert commit์ ๋ณํ๋ฅผ ์ทจ์ํ๊ธฐ
## ์ทจ์ํ๊ณ ์ถ์ commit์ id
## ์ด๋ ๊ฒ ํ๋ฉด ์ด์ ์ ์ปค๋ฐ ํ์คํ ๋ฆฌ๊ฐ ๋จ์์๋ค.
## ํ๋จ๊ณ์ฉ ๋ฐ์ ๋ชป๋ด๋ ค๊ฐ๋ค.
## ๋ฌด์กฐ๊ฑด ์ญ์์ด๋ค.
git revert <id>
Branch & Conflict
log ์ต์
์ผ๋ก ํ์ธํ๊ธฐ
## --all ๋ชจ๋ ๋ธ๋์น๋ณด๊ธฐ
## --graph ์๊ฐ์ ์ผ๋ก ํํ๋๋ค.
## --oneline ๋ฒ์ ์ด ์ฅํํ๊ฒ ๋์ค์ง ์๋๋ก ํด์ค๋ค.
log --all --graph --oneline
branch
## ๋ชฉ๋ก์ ๋ณด์ฌ์ค๋ค.
git branc h
## branch ๋ง๋ค๊ธฐ
git branch <์ด๋ฆ>
## checkout
## master์ ๋์ผํ์ง ์์ ์ ์๋ค. ๋ง๋ค์ด์ง ๊ทธ ์์ ์ด ์ต์ด์ ์์
git checkout <๋ธ๋์น์ด๋ฆ>
๋ค๋ฅธ ๋ธ๋์น์ ๋ด์ฉ์ master์ ํฉ์น๊ธฐ
## ๋ค๋ฅธ ๋ธ๋์น์ ๋ด์ฉ์ commit๊น์ง ํ๋ค๋ฉด master๋ก checkout
git checkout master
git merge <๋ค๋ฅธ ๋ธ๋์น>
### ์ถฉ๋์ด ๋ฌ์ ๋
## ์ถฉ๋์ ํด๊ฒฐํ ํ
git add <ํ์ผ>
## ๋ฉ์ธ์ง๋ฅผ ์ฐ์ง ์์๋ ์๋์ผ๋ก ์์ฑ
git commit
p4Merge
Merge๋ฅผ ๋์์ค๋ค.
์ฐธ๊ณ https://gist.github.com/tony4d/3454372
git config --global merge.tool p4mergetool
git config --global mergetool.p4mergetool.cmd \
"/Applications/p4merge.app/Contents/Resources/launchp4merge \$PWD/\$BASE \$PWD/\$REMOTE \$PWD/\$LOCAL \$PWD/\$MERGED"
## ์๋์ผ๋ก add๊น์ง ํด์ค๋ค.
git mergetool
## ์ด์ ์ถฉ๋์ํฉ ์ฒดํฌ
cat work.txt.orig
git workflow (git flow) ์ cherry-pick์ rebase
git workflow ๊ท์น์ ์ ์ฉํ๊ธฐ
cherry-pick์ ์ด์ฉํ์ฌ ํ์ํ ๋ถ๋ถ๋ง ๋ณํฉํ๊ธฐ
rebase ๊ณต๊ฐ์ ๋ฃ์ด๋๊ณ ๋ณํฉํ๊ธฐ
์ถํ ๊ณต๋ถ๊ฐ ๋ ํ์
HEAD์ Branch์ commit
Detached
Head๊ฐ ๋์ด์ branch๋ฅผ ๊ฐ๋ฆฌํค์ง ์๊ณ ์ ์ฅ์๋ฅผ ๊ฐ๋ฆฌํฌ๋
git checkout <id>
checkout vs reset
checkout (change)
HEAD๋ฅผ ์ ์ดํ๋ค.
reset (delete ๋๋..)
๋ธ๋์น / ์ ์ฅ์๋ฅผ ๊ฐ๋ฅดํค๋ ์ ์ฅ์๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
backup
HTTP
๋ณด์์ด์๊ฐ ์๋ค.
SSH
๋ณด์ ๋ฌธ์ ๋ ์์ง๋ง ์ฌ์ฉํ๊ธฐ์ ๊ณต๋ถ๊ฐ ํ์
์๊ฒฉ ์ ์ฅ์ ์ฐ๊ฒฐํ๊ธฐ
git remote add origin <์ฃผ์>
## ์ฐ๊ฒฐ ํ์ธ
git remote
## pushํ๊ธฐ, ์ด๋ค ์๊ฒฉ์ ์ฅ์์ ์ฐ๊ฒฐํ ์ง ์
ํ
ํ๋ค.
git push --set-upstram origin master
clone
git clone <์ฃผ์> <๋ณ๊ฒฝํ๊ณ ์ถ์ ๋๋ ํ ๋ฆฌ๋ช
>
pull
## ์๊ฒฉ์ ์ฅ์๋ก๋ถํฐ ๋ค์ด๋ฐ์ ์ ์๋ค.
git pull
ํ์
## ์๊ฒฉ์ ์ฅ์ ๋ด์ฉ์ ๋ณต์ฌํ๋ค.
git clone <์ฃผ์>
rejected
pushํ rejected๊ฐ ๋ฌ๋ค๋ฉด ๋ค๋ฅธ์ฌ๋์ด ์์ ํ ๊ฒ์ pull๋ฐ์ง ์์ ์๊ธด์ผ
git mergetool
## ์์ ํ ๋ค์ add๋ฅผ ํด์ผํ๋ค.
git fetch -> git merge FETCH_HEAD -> commit -> push
๋ฅผ ํตํด pull -> commit -> push
์ ๋๊ฐ์ ์ผ์ ํ ์ ์๋ค.
(HEAD -> master, origin/master)
HEAD๋ ๋ก์ปฌ์ ์ฅ์์ธ master๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๊ฒฉ์ ์ฅ์๋ origin/master๋ผ๋ ๋ป์ด๋ค.
## ํ์ธํด๋ณด๋ฉด ์๊ฒฉ์ ์ฅ์๋ ์
๋ฐ์ดํธ ๋์ด์์ง๋ง ๋ก์ปฌ์ ์ฅ์๋ ์
๋ฐ์ดํธ ๋์ด์์ง ์๋ค.
git fetch
## ๋ฐ๋ก merge๊ฐ ํ์ํ๋ค.
git merge origin/master
๋ฐ๋ณต์ ์ธ origin/master ํผํ๊ธฐ FETCH_HEAD
cat .git/FETCH_HEAD
## ์ด์ ์ mergeํ HEAD๋ฅผ ๊ธฐ์ตํ๋ค. ํ์ผ์ ๋ง๋ฌ์ผ๋ก
git fetch; git merge FETCH_HEAD
patch
๊ถํ์ด ์๋๋ฐ ์ ๋ฌํด์ฃผ๊ณ ์ถ์๊ฒฝ์ฐ
## ๋ณด๋ด๊ธฐ
git format-patch <์์
์ง์ ์ id>
## ๋ฐ๊ธฐ
git am -3 -i *.patch
pull request
ํฌํฌํ ์ค๋ฆฌ์ง ๋ ํ์งํ ๋ฆฌ์ ์์ฒญํ ์ ์๋ค.
Last updated
Was this helpful?