git init . : ํ์ฌ ๋๋ ํ ๋ฆฌ ๋ฒ์ ๊ด๋ฆฌ ์์ // .git ํ์ผ์ ๋ฒ์ ๊ด๋ฆฌ์ ๊ด๋ จ๋ ํ์ผ๋ค์ด ์์.
git init ์ ์ฅ์์ด๋ฆ : ์ ์ฅ์์ด๋ฆ ์ด๋ผ๋ repository๋ฅผ ์์ฑ
git status : ํ์ฌ ์ํ ๋ฒ์ ๊ด๋ฆฌ ์ํ๋ฅผ ์ ์ ์๋ค. // untracted ํ์ผ์ ๋ฒ์ ๊ด๋ฆฌ ์ ๋ค์ด๊ฐ ๊ฒ.
git add : untracted ํ์ผ์ staging area์ ์ฌ๋ฆฌ๋ ๊ฒ. ๊ทธ๋ฌ๋ฉด committed file
git commit : ๊ธฐ๋ณธ ์๋ํฐ๋ฅผ ๋์ด๋ค.
git config --global core.editor "vim" : ๊ธฐ๋ณธ ์๋ํฐ๋ฅผ ๋น์ผ๋ก ์ค์ ํ๋ค.
git commit -m "a": "a"๋ผ๋ ์ด๋ฆ์ repository ๋ฒ์ ์ ๋ง๋ ๋ค.
git commit -am "a" : staging area์ ์๋ ํ์ผ์ ์์ ์ฌํญ์ ์ ์ฅํ๊ณ , "a"๋ผ๋ ์ด๋ฆ์ repository ๋ฒ์ ์ ๋ง๋ ๋ค.
git commit --amend : ์๋ํฐ๋ก ๋ค์ด๊ฐ์ commit message๋ฅผ ๋ฐ๊ฟ์ ์๋ค.
git log : ๋ฒ์ ์ ์ญ์ฌ๋ฅผ ๋ณผ ์ ์๋ค. // q๋ฅผ ๋๋ฅด๋ฉด ๋๊ฐ ์ ์๋ค.
git log -stat : ๋ฒ์ ๋ง๋ค ์ด๋ค ํ์ผ์ด ์ฐ๋ฃจ๋์ด ์๋์ง ํ์ธํ ์ ์๋ค.
git log -p : ๊ฐ ๋ฒ์ ๋ง๋ค ์ด๋ค ์์ ์ด ์ผ์ด๋ฌ๋์ง ํ์ธํ ์ ์๋ค.
git log --all --graph --oneline : ๋ชจ๋ ๋ธ๋์น๋ฅผ ๋ณด๊ณ , ์๊ฐ์ ์ผ๋ก ๋ณด๊ณ , ์ฅํฉํ์ง ์๊ฒ log๋ณด๊ธฐ
git checkout ๋ฒ์ ์ฃผ์ : ํด๋น ๋ฒ์ ์ผ๋ก ๊ฐ ์ ์๋ค.
git checkout ๋ธ๋์น์ด๋ฆ : ํด๋น ๋ธ๋์น๋ฅผ HEAD๊ฐ ๊ฐ๋ฆฌํค๊ฒ ํจ๊ณผ ๋์์ ๊ทธ ๋์ ๋ฒ์ ์ผ๋ก ๊ฐ๋ค.
git checkout master : ๊ฐ์ฅ ์ต์ ๋ฒ์ ์ผ๋ก ๊ฐ ์ ์๋ค.
git diff : ๋ง์ง๋ง ๋ฒ์ ๊ณผ working tree ์ฌ์ด์ ์ฐจ์ด๋ฅผ ๋ณผ ์ ์๋ค.(commit ์ ๋ง์ง๋ง ๊ธฐํ๋ก ์ด์ ์ํ๋ฅผ ๋ณด์ฌ์ค๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.)
git reset --hard : local์์ ์์ ํ์ง๋ง ์ด๋ฅผ ๋ฌด์ํ๊ณ ๋ง์ง๋ง ๋ฒ์ ์ํ๋ก ๋์๊ฐ๊ฒ ํ๋ ๊ฒ.
git reset --hard ๋ฒ์ ์ฃผ์ : master๋ฒ์ ์ ๋ฒ์ ์ฃผ์์ ํด๋นํ๋ ๋ฒ์ ์ผ๋ก ๋ง๋๋ ๊ฒ.
git revert ๋ฒ์ ์ฃผ์ : ๋ฒ์ ์ฃผ์์์ ์์ ๋ ์ฌํญ๋ค์ ๋ชจ๋ ์ญ์ ํ์ฌ ๋ฒ์ ์ผ๋ก ๋จ๊ธด๋ค. ์ด์ ์ํ๋ก ๋๋ฆฌ๊ธฐ๋ ๋๋ฆฌ๋๋ฐ ์ญ์ฌ๋ฅผ ๋จ๊ธฐ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ค.
cf) ๋ฒ์ ์ฃผ์๋ ๊ธฐ์ตํ๊ธฐ ํ๋๋๊น tag๋ฅผ ์ฌ์ฉํ ์๋ ์๋ค.
git branch ๋ธ๋์น์ด๋ฆ : ๋ธ๋์น์ด๋ฆ ๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ธ๋์น๋ฅผ ๋ง๋ ๋ค.
// ๋ธ๋์น : ํ๋์ repository ์์์ ๊ณตํต์ ๋ฒ์ ์ ๊ณต์ ํ๋ฉด์๋ ๊ฐ์์ ๋ฒ์ ์ ๋ ๊ฐ์ง ์ ์๋ ๊ฐ๋
cf) git logํด์ ๋ธ๋์น๋ค์ ๊ฐ์ง๋ฅผ ์ดํด๋ณด๋ฉด ๋ฒ์ ๋จ์๋ก ๊ฐ์ง๋ฅผ ๋ป์ด๋๊ฐ์ ์ ์ ์๋ค. ์ฐธ๊ณ .
git merge ํด๋น๋ธ๋์น : ํด๋น ๋ธ๋์น๋ฅผ master๋ธ๋์น์ ๋ณํฉํ ์๋ก์ด ๋ฒ์ ์ ๋ง๋ ๋ค.
- working tree : ๊ธฐ๋ณธ ์์ ๊ณต๊ฐ, ์๋ก ๋ง๋ ํ์ผ์ด ์ฌ๊ธฐ์ ์์๋๋ค.(untracked file)
- staging area : ๋ฒ์ ๊ด๋ฆฌ๊ฐ ํ์ํ ํ์ผ์ ์ฌ๋ ค๋๋ ๊ณณ, git add๋ฅผ ํ ํ์ผ์ด ์ฌ๊ธฐ์ ์์๋๋ค. ์ด ๊ณต๊ฐ๋ถํฐ git์ ๊ดํ ์๋ ์๊ฒ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ผ์ git commit ํ๊ฒ ๋๋ฉด ๋ฒ์ ๊ด๋ฆฌ๊ฐ ์์๋ ๊ฒ์ด๋ค.
- repository : ๋ฒ์ ์ด ์ ์ฅ๋์ด ์๋ ๊ณณ(.git ํ์ผ),
cf) HEAD๋ ๊ธฐ๋ณธ์ ์ผ๋ก master branch๋ฅผ ํฌ์ธํ ํ๊ณ ์๊ณ , master branch๋ ๋ง์ง๋ง ๋ฒ์ ์ ๊ฐ์ง๊ณ ์๋ค.
- Local => Repository
git add ํด๋นํ์ผ // ํน์ git add .
git commit -m "Commit Message"
git push
- Merge (๊ฐ ๋ธ๋์น๊ฐ ๋ค๋ฅธ ํ์ผ์ ์์ ํ ๊ฒฝ์ฐ, ๊ฐ์ ํ์ผ์ด๋ผ๋ ๋ค๋ฅธ ๋ถ๋ถ์ ์์ ํ ๊ฒฝ์ฐ)
git checkout master
git merge ํฉ์น ๋ธ๋์น // ์ค์ํ๋ค๋ฉด git reset --hard ๋ฒ์ ์ฃผ์
- Merge (๊ฐ ๋ธ๋์น๊ฐ ๊ฐ์ ํ์ผ์ ๊ฐ์ ๋ถ๋ถ์ ์์ ํ ๊ฒฝ์ฐ)
git checkout master
git merge ํฉ์น ๋ธ๋์น // ์ด๋ฌ๋ฉด CONFLICT ๊ฐ ๋ฌ๋ค
๊ทธ ํ์ผ์ ์๋ํฐ๋ก ์ด๊ณ ๋ค์ด๊ฐ๋ณด๋ฉด ๊ฐ์ ๋ถ๋ถ์ ์์ ํ ๊ฒ์ ๋ํด ๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ผ๋ก ์ฑ์์ ธ์๋ค.
<<<<<<<<<<<<<< HEAD
๋ถ๋ผ๋ถ๋ผ1
==========
๋ถ๋ผ๋ถ๋ผ2
>>>>>>>>>>>>>> ํฉ์น ๋ธ๋์น
๋ถ๋ผ๋ถ๋ผ1์ HEAD์์ ์์ ์ ํ ๋ด์ฉ์ด๊ณ , ๋ถ๋ผ๋ถ๋ผ2๋ ํฉ์น ๋ธ๋์น์์ ์์ ์ ํ ๋ด์ฉ์ด๋ค.
๊ทธ๋ฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ด๊ฐ ์ต์ข
์์ ์ ํด์ฃผ๋ฉด ๋๋ค.
<<<<<<<<<<<<<<< HEAD
>>>>>>>>>>>>>>> ํฉ์น ๋ธ๋์น
==========
์ด๊ฑฐ 3๊ฐ๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ฐ๊ณ , ์ ๋ง ๋ค์ด๊ฐ ๋ด์ฉ์ ์ฑ์ด๋ค.
git add ํด๋นํ์ผ
git commit
๋.
-
git cloneํด์ ํด๋น ๋ด์ฉ์ ๋์ ์ ์ฅ์์์ ๊ณ์ ์์ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ
๋์ ์ ์ฅ์ ํ๋ ๋ง๋ค์ด ๋๊ณ ์์ git clone otherrepository_url cd otherrepository git remote -v git remote remove origin git remote add origin myrepository_url git remote -v git push -u origin master
: https๊ฐ ์๋ ssh๋ฅผ ์ด์ฉํ์ฌ ์๋๋ก๊ทธ์ธ์ ํธ์ต์ ์ป์ ๊ฒ์ด๋ค. repository์ public key๋ฅผ ๋๊ณ , local์ private key๋ฅผ ๋๋ ์์ผ๋ก ์ด๋ฅผ ๊ตฌํํ๋ค.
- ๋ก๊ทธ์ธ ์์ด git push๋ฅผ ํ๊ณ ์ถ์ pc์ home ๋๋ ํ ๋ฆฌ์์
ssh-keygen
: ์ง์์ ์์ ํ๊ณ pushํ ๋ค์์, ๋ค์๋ ํ์ฌ์ ๊ฐ์ pull์ ํ์ง ์๊ณ ์์ ์ ํด๋ฒ๋ฆฐ ๊ฒฝ์ฐ๋ ์ด๋ป๊ฒ ํด์ผํ ๊น?
ํ์ฌ์์ ์์ ์ ๋ง์น๊ณ push๋ฅผ ํ๋๋ git pull์ ํ๋ผ๋ ๋ฉ์ธ์ง๋ฅผ ๋ฐ์๋ค. ํ! ๊ทธ๋ฌ๋ฉด, git pull์ ํ๋ฉด ์ค๋ ์์ ํ ๋ด์ฉ์ด ๋ค ์ฌ๋ผ์ง๋๊ฒ ์๋๊น ํ์ง๋ง. ๋ค๋ฆ๊ฒ git pull์ ํ๊ฒ ๋๋๋ผ๋ ์ด์ ์ํ๋ฅผ ๋ฐ์์ค๊ณ ๋ด local์์ ์์ ํ ๋ด์ฉ๋ add๋์ง ์์์ฑ๋ก ๋จ์์๋ค.
๋ฐ๋ผ์, ๋ค๋ฅธ ๊ณณ์์ ์์ ์ ์์ํ๊ธฐ ์ ์ git pull์ ๊ผญ ํ๋๊ฒ ๋ง์ผ๋, ๊น๋นกํ๋ค๊ณ ํ๋๋ผ๋ ๊ทธ ๋ ์์ ํ ๋ด์ฉ์ด ๋จ์์์ผ๋ ๊ฑฑ์ ํ์ง ์์๋ ๋๊ฒ ๋ค.
: ๋ฌผ๋ก , 100MB๊ฐ ๋๋ ํ์ผ์ ์ฌ๋ฆด ์๋ ์๋ค. ํ์ง๋ง, ์ง๊ธ์ ์ค์นํ์ผ์ด๋ ํ์์๋ (100MB๊ฐ ๋๋)ํ์ผ์ ๋ชจ๋ฅด๊ณ pushํ๋ค๊ฐ ์๊ธฐ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
์ผ๋จ, commit์ ํด๋ฒ๋ฆฐ ์ํ๋ผ๋ฉด, ๋ก์ปฌ์์ 100MB๊ฐ ๋๋ ํ์ผ์ ์ง์ด๋ค๊ณ ํ ์ง๋ผ๋ push๋ ๋์ง ์๋๋ค. ๊ทธ๋ฌ๋ฉด commit ์ ์ทจ์ํด์ผํ๋ค.
commit ์ ์ทจ์ํ๋ ๋ฐฉ๋ฒ์ reset๊ณผ revert๊ฐ ์๊ณ , reset์ ๊ฒฝ์ฐ๋ฅผ ์์๋ณด์.
git log
๋ฅผ ํด๋ณด๊ณ , ์ด์ ์ปค๋ฐ ์ฝ๋๋ฅผ ์นดํผํด์ resetํ๋ค.
git reset [๋์๊ฐ๊ณ ์ถ์ commit์ฝ๋] --hard
git clone -b sangjin --single-branch https://github.com/BAECHOOs/Spring-toyproject.git
git commit --amend --author="์์ฑ์๋ช
<email์ฃผ์>"
git rm --cached . -rf
๋ฅผ ํ๊ณ , ๋ค์ git add / commit / push๋ฅผ ํฉ์๋ค.
git rm --cached *
git reset HEAD^
(๋ฐ๋ก ์ง์ commit์ ์ทจ์ํ๋ ๊ฒฝ์ฐ์ ๋๋ค.)
git update-index --assume-unchanged [ํ์ผ]
$ git update-index --no-assume-unchanged [ํ์ผ]
๋๋ ํ ๋ฆฌ ์ถ์ ์ด ์๋๋ฉด ํ์ผ๋ช ๋์ '/' ๋ฅผ ๋ถ์ด๋ฉด ๋๋ค.
git stash // working directory ๊นจ๋ํ๊ฒ
git stash apply // ๋ณต๊ตฌ
-
ํธ์ ์ ์ธ ๊ฒฝ์ฐ
git commit --amend -m "์์ ํ ๋ฉ์ธ์ง"
-
ํธ์๋ฅผ ํด๋ฒ๋ฆฐ ๊ฒฝ์ฐ
: push๋ฅผ ์ทจ์ํ ์์ ์ด๋, ์์ ํ๊ฒ ์์ ํ ํ์ผ์ ๋ฐฑ์ ํ์,,,โโโโโ
(๊ทธ๋ฐ๋ฐ ๋ฐฑ์ ํ์ผ ๋ชป ๋ง๋ค์ด๋ ๊ฑฑ์ ๋ง์. git commit ๋ก๊ทธ ๋ณด๋ฉด ์์ ๋ด์ฉ ๋ค ์์ผ๋!)
git revert "์ทจ์ ์ํ๋ ํด์๊ฐ" git push
push๋ฅผ ๋จผ์ ์ทจ์๋ฅผ ํ๊ณ , ๋จผ์ ๋ฐฑ์ ํด๋์ ๋ด์ฉ์ ์ฎ๊ธฐ๊ณ
git add . git commit -m '์ปค๋ฐ ๋ฉ์ธ์ง ๋ค์ ์ ๊ธฐ' git push
ํ์ ๋ ๋จ๊ธฐ์ง ์๊ฒ ํ๋ ๋ฒ
git log
git reset --hard [ํด๋นcommit]
git push -f origin [ํด๋น branch]
git checkout -b feature/dev-event-crud
public repo ์์ private repo ๋๋ ๋ฒ~!
public repo์์ ์ํ๋ ์์น๋ก ๊ฐ์!
git submodule add [repo์ฃผ์]
๊ทธ๋ฆฌ๊ณ public repo๋ฅผ ์๋กญ๊ฒ clone ๋ฐ์ ๋, ๋ด๋ถ์ submodule๊น์ง ํจ๊ป ๋ฐ์ผ๋ ค๋ฉด!
git clone --recurse-submodules [repo์ฃผ์]
๊ทธ๋ฆฌ๊ณ submodule ์ ๋ฐ์ดํธ๋
git submodule update --remote