๐ ๊ฐ๋ฐ ๊ณต๋ถ 1๊ฐ์ ์ฐจ์ธ to-be ๊ฐ๋ฐ์์ ์์ต ๋ธ๋ก๊ทธ๐๏พ Aug 15 ~ 21, 2021
ํ์ฌ ์ํ
๋ฉ๋ถ์ ์ฐ์. terminal ํ๋ฉด์ด๋ ๋ช ๋ น์ด๋ ์์ง ์ ์ต์ํ๋ฐ Git ๋ช ๋ น์ด๋ก ์์ ๋ฌผ์ ๊ด๋ฆฌํด์ผ ํ๋ค๋...
์ง๊ธ์ ๊ฐ์ธ ์์ ๋ฌผ์ด์ง๋ง ๋จธ์ง ์์ team project๋ฅผ ํ๊ฒ ๋ ํ ๋ฐ ์ด๋ ์ ๋ ์ค์ํ๋ฉด ์ ๋๋ค......ใ vใ
์ด ์ญ์ ์์ ์ต์ผ๋ฉด ๋ณ ๊ฒ ์๋๊ฒ ๋ ๊ฒ์ด๋๋ค... ๋๊ฐ ๋๋๋ผ ํด์ปค ํ๋ผ๋ ๊ฑฐ ์๋์์. ๊ธฐ์ด๋ด๋ผ ์ง์์
๋์์ฃผ์ ๋ถ๋ค ์์์ผ๋ฉด ๋ ์ด๋ป๊ฒ ๋์๊น.
Git์ VCS(Version Control System)์ ์ํด ์ฌ์ฉ๋๋ ์ฃผ์ํ tool์ด๋ค.
push๋ง ์ ํด๋์๋ค๋ฉด ์์
๋ฌผ์ ์ํ๋ ์๊ฐ์ผ๋ก ๋๋๋ฆด ์ ์๋ค.
centalized version control์ด ์๋๋ผ distributed version control์ด๊ธฐ ๋๋ฌธ์ ์์
์๋ค์ด server ์์ ์ฑ์ ์ํฅ์ ๋ ๋ฐ์ผ๋ฉด์ ์์
ํ ์ ์๊ณ , offline์์๋ ์์
ํ ์ ์๋ค.
์ด์จ๋ ์์
๋ฌผ์ server์ ๋ณด๊ด๋๋๋ฐ, ๋ํ์ ์ธ server๊ฐ Git Hub์ด๋ค.
Git์ผ๋ก ๊ด๋ฆฌํ ์์
๋ฌผ์ Git Hub์ ์ฌ๋ฆฌ๊ณ ํ์
๊ด๊ณ์์ ์ํตํ ์ ์๋๋ฐ, ์ด๋ฅผ ์์ฝํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
Git์ ๋ช
๋ น์ด๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ํ '๋ช
๋ น์ด program'์ด๋ฉฐ ๋ช
๋ น์ด๋ git + ๋ช
๋ น์ด + ์์ฑ
์ผ๋ก ์์ฑํ๋ค.
Git ๊ณต์ homepage์์ documentation ํ์์ ์๋ 'Reference' menu์ ๋ช
๋ น์ด์ ์์ฑ ๊ฐ์ด ์ ๋ฆฌ๋์ด ์๋ค.
terminal์์ git ๋ช
๋ น์ด + --h
๋ฅผ ์
๋ ฅํด๋ ๋ช
๋ น์ด์ ์์ฑ ๊ฐ์ ํ์ธํ ์ ์๋ค.
Git์ GUI pgrogram์ผ๋ก SourceTree๋ GitKraken์ ์ฐ๊ธฐ๋ ํ๋ค. (๋๋ Fork!)
Git Hub์์ open source๋ฅผ ์ฐธ๊ณ ํ๊ธฐ๋ ํ๊ณ , ๊ฐ๋จํ ์คํ ์์ ๋ถํฐ (ํํ '์ด์ญ์ค๊ธฐ') ๋ฒ์ญ ํน์ ์ค๋ฅ ๊ฐ์ ๋ฑ ๋ด๊ฐ ์ฐธ์ฌํ ์๋ ์๋ค.
์ ๋ช
ํ open source๋ PR์ ํ ๋ template์ด ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
๏พ ๏พ 1) terminal์์ git --version
์ ์
๋ ฅํ์ ๋ version์ด ๋์ค๋ฉด ์ด๋ฏธ Git์ด ์ค์น๋์ด ์๋ ๊ฒ
๏พ ๏พ ๏พ ๏พ ๋ง์ฝ ์๋ค๋ฉด ๊ณต์ homepage์์ download
๏พ ๏พ 2) Git์ ์ค์นํ๋ฉด Git์ ๋ํ ๋ชจ๋ ํ๊ฒฝ ์ค์ ์ด .gitconfig file ์์ ์ ์ฅ๋๋ฏ๋ก terminal์์ git config --list
๋ผ๊ณ ์
๋ ฅํ๋ฉด Git์ ๋ชจ๋ ์ค์ ํ์ธ ๊ฐ๋ฅ
๏พ ๏พ 3) editor์์ ์ค๋ฐ๊ฟ์ ํ ๋ ์ด์์ฒด์ ์ ๋ฐ๋ผ ํธํ์ด ๋์ง ์์ git history
๋ git blame
๋ช
๋ น์ด์์ ๋ฌธ์ ๊ฐ ์์ ์ ์๋ฏ๋ก git config --global core.autocrlf input
์
๋ ฅ
๏พ ๏พ 4) git init
์ผ๋ก Git ์ด๊ธฐํ / ์์
๏พ ๏พ ๏พ ๏พ Git์ ์ด๊ธฐํํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก master branch๊ฐ ์์ฑ๋จ
๏พ ๏พ ๏พ ๏พ master branch๊ฐ commitํ ๊ฑธ ๊ด๋ฆฌํ๋ ๊ฒ์
๏พ ๏พ 5) project directory์์ ls -al
ํ๋ฉด '.git'์ด ๋์ค๋๋ฐ ์ด๋ Git์ด ํด๋น project๋ฅผ ๊ด๋ฆฌํ๊ณ ์๋ค๋ ์๋ฏธ์ด๊ณ , .git์ ์จ๊ฒจ์ง file์
๏พ ๏พ ๏พ ๏พ ls
๋ผ๊ณ ๋ง ํ๋ฉด ์จ๊ฒจ์ง file์ ๋์ค์ง ์์
๏พ ๏พ 6) rm -rf .git
ํ๋ฉด Git์ด ์ญ์ ๋์ด์ ๋ ์ด์ Git project๊ฐ ์๋๊ฒ ๋จ
๏พ ๏พ 7) ํ์ฌ file์ ์ํ๊ฐ ๊ถ๊ธํ๋ฉด git status
summary
git init
git commit -m "first commit"
git branch -M main
git remote add origin https๋ก_์์ํ๋_git_์ ์ฅ์_์ฃผ์
git push -u origin main
local
git init
์ ์ ํด์ Git์ด trackํ๊ณ ์์ง ์๋ ์๋ฃgit add .
ํน์ git add file๋ช
.ํ์ฅ์
๋ฅผ ์
๋ ฅํด staging area๋ก ์ด๋)git add *
๋ ๋ชจ๋ file์ staging area๋ก ์ฎ๊ธฐ๋ ๋ช
๋ น์ด์ธ๋ฐ, ๋ง์ฝ ์ด ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๊ธฐ ์ ์ ์์ ์ด๋ ฅ์ด ์๋ file์ ์ญ์ ํ๋ฉด git add *
๋ฅผ ์
๋ ฅํด๋ ์์ ์ด๋ ฅ์ด ์๋ ๋๋จธ์ง file๋ค์ด staging area๋ก ์ฎ๊ฒจ๊ฐ์ง ์์. ์ด๋ git add .
๋ฅผ ์
๋ ฅํ๋ฉด ์ญ์ ๋์ง ์์ ๋๋จธ์ง file๋ค์ด staging area๋ก ์ด๋๋จecho file๋ช
.ํ์ฅ์ > .gitignore
๋ช
๋ น์ด๋ก ํด๋น file์ .gitignore file์ ์ถ๊ฐํ๋ฉด ๋จgit diff
์
๋ ฅ, ๊ทธ ์ค์์๋ staging area์ ์๋ ๋ด์ฉ๋ง ๋ณด๊ณ ์ถ๋ค๋ฉด git diff --staged
ํน์ git diff --cached
์
๋ ฅgit diff --staged
๋ช
๋ น์ด๋ ๋ณ๊ฒฝ ๋ด์ญ์ terminal์์ ๋ณผ ์ ์๋๋ฐ, ์ด ๋ด์ฉ์ editor์์ ๋ณด๊ณ ์ถ๋ค๋ฉด git config --global -e
์ ์
๋ ฅํด์ [diff] tool = vscode [difftool "vscode"] cmd = code --wait --diff $LOCAL $REMOTE
๋ฅผ ์์ฑํ ํ ์ ์ฅ, ๋ค์ terminal์์ git diftool
ํน์ git difftool --staged
์
๋ ฅgit add
๋ก staging area๋ก ์ด๋git rm --cached file๋ช
.ํ์ฅ์
๋ก ๋ค์ working direcotry๋ก ์ด๋git commit
์ commit ๋ช
๋ น์ด์ธ๋ฐ ์ด๊ฒ๋ณด๋ค๋ git commit -m "commit message"
๋ฅผ ๋ ๋ง์ด ์ฌ์ฉgit commit -am "commit message"
git log
commit
์ผ๋ก ์ version์ ๋ง๋ค์ด .git directory์ ์ฌ๋ฆฌ๊ณ , checkout
์ผ๋ก ์ํ๋ version์ผ๋ก ๋์๊ฐ ์ ์์remote
push
๋ก remote์ ๋ณด๋pull
๋ก remote์ ์๋ ๊ฑฐ ๋ฐ์์ด๊ฒฐ๊ตญ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก Git์ ์ฌ์ฉํด ์์ ๋ฌผ์ ๊ด๋ฆฌํ๋ ๊ฒ์ด๋ค.
pwd // ํ์ฌ ์์น ํ์ธ
cd desktop
cd <project folder> // folder๋ฅผ ๋ง๋ค๊ณ ์ถ์ผ๋ฉด mkdir <folder๋ช
>
git init // ์ด ์์น์์ git์ ์ฌ์ฉํ ์ ์๋๋ก ์ด๊ธฐํ/์์
git status // ํ์ฌ ์ํ ํ์ธ
git clone <Git ์ฃผ์> // ํน์ git remote add origin <Git ์ฃผ์>๋ก ์๊ฒฉ ์ ์ฅ์ ์ถ๊ฐ
// git clone์ remote์ code๊ฐ local์ธ ๋์๊ฒ ๋ค์ด์จ ๊ฒ
ls // directory์ file ํ์ธ
cd <merge๋ฐ์ directory ์ด๋ฆ> // file์ ์์ฑํ๊ณ ์ถ๋ค๋ฉด touch <file๋ช
.ํ์ฅ์>
.code // ๋ค๋ฅธ terminal์์ code ์
๋ ฅํ๊ณ ์์์ผ๋ฉด ์ด ๋ช
๋ น์ด๋ก editor๋ก ์ด๋, 'cmd + J'๋ก editor์ terminal tab ์ด๊ธฐ
npm install
// master๋ฅผ main์ผ๋ก ๋ณ๊ฒฝํ๊ณ ์ถ๋ค๋ฉด git branch -m master main
git branch // branch ์ํ ํ์ธ
git branch <feature/๋ด๊ฐ์์
์ค์ธ๊ธฐ๋ฅ> // branch ์์ฑ ex. feature/login
// branch๊ฐ ํน์ ์์ ๋ถํฐ ์๋ก์ด ์๊ณต๊ฐ์ด ๋ง๋ค์ด์ ธ์ (like ํํ ์ฐ์ฃผ) ๊ฐ์์ ์์
์ด ์๋ก์๊ฒ ์ํฅ์ ์ฃผ์ง ์์ผ๋ฉฐ, <feature/๋ด๊ฐ์์
์ค์ธ๊ธฐ๋ฅ>์ ์์
์๋ผ๋ฆฌ ์ฝ์ํ ์ด๋ฆ์
// โป ๋ค๋ฅธ ๊ธฐ๋ฅ ์์
ํ ๊ฑฐ๋ฉด git checkout main ํ git branch <feature/์์
ํ ๊ธฐ๋ฅ>์ผ๋ก branch ์ด๋ ๋ฐ ์์ฑํ๋ ๊ฒ์ด ์ ํ๋์ด์ผ ํจ
clone ๋ฐ์ ํ ๋ชจ๋ ์์
์ brnach๋ฅผ ์์ฑํด์ ๊ทธ ์์น๋ก ์ด๋ํ์ฌ ์งํํด์ผ ํ๋ค.
main์์ ํ๋ฉด ์ ๋๋ค.
pushํ๊ธฐ ์ ์ ํ์ฌ ์์น๋ฅผ ํ์ธํด์ผ ํ๋ค. main (master) branch์์๋ ์์ ๋ ํ๋ฉด ์ ๋์ง๋ง push๋ ๋ ํ๋ฉด ์ ๋๋ค.
git add . // ํน์ ํ์ผ์ stagingํ๊ธฐ ์ํ๋ค๋ฉด git add <file๋ช
.ํ์ฅ์>.
// git commit์ commit message๊ฐ ์ฌ๋ฌ ์ค์ผ ๋ ์ฌ์ฉํ๊ณ ๋ณดํต์ ์๋์ ๋ช
๋ น์ด๋ก commitํจ
git commit -m "<commit meassage>"
git push origin <feature/๊ฐ๋ฐ์ค์ธ๊ธฐ๋ฅ>
git log // commit ํํฉ ํ์ธ
commit์ ์ฌ๋ฌ ์ค ์ฐ๊ณ ์ถ๋ค๋ฉด vi
ํ๊ณ i ๋๋ฌ์ ์์ฑ โ ESC โ :wq
๋ก commit message๋ฅผ ์ ์ฅํ๊ณ ๋ฐ์ผ๋ก ๋์จ๋ค.
commit ์์ฑ ์์์ ์กฐ์ง์ ๋ฐ๋ผ ๋ค๋ฅด๋ค.
๋ถ๋ฅ : ํ์ค ์ ๋ชฉ
- ๊ตฌํ ๋ด์ฉ ์์ธ ์ค๋ช
1
- ๊ตฌํ ๋ด์ฉ ์์ธ ์ค๋ช
2
"remote์ master(main) branch์ผ, ๋ ์ค๋น๋ผ์ merge ์์ฒญํ์ผ๋๊น ๋น๊ฒจ์ค."์ ์๋ฏธ์ด๋ค.
Git Hub์์ PR์ ์์ฑํ๋ฉด ๋๋๋ฐ, ์ด๋ convention์ ์ค์ํด์ผ ํ๋ค.
์ง๊ธ๊น์ง ํ ๊ฑฐ commitํ๊ณ , remote main์์ merge๋ ๊ฑฐ pull ๋ฐ๊ณ , local์์๋ merge๋ฅผ ํด์ผ team ์์
๋ฌผ์ ์ต์ ํํ ์ ์๋ค.
conflict ํด๊ฒฐ๋ ๋ง์ฐฌ๊ฐ์ง ๊ณผ์ ์ด๋ค.
git checkout main
git pull origin main
git checkout feature/์์
์ค์ธ๊ธฐ๋ฅ
git merge main
git add .
git commit -m "Fix: conflict ํด๊ฒฐ"
git push origin feature/์์
์ค์ธ๊ธฐ๋ฅ
main์ด ๋ง์ด ์งํ๋ ์ํ์์ branch๊ฐ ๋๋ฌด ์์ ์ํ์ด๋ฉด conflict ์๊ธฐ๋๊น main์ ๋จผ์ pull ๋ฐ๊ณ branch๋ฅผ pushํ๋ ๊ฒ conflict๊ฐ ๋ ์๊ธด๋ค.
merge ํ์ ๋ด๊ฐ ํ๋ ์์
๋ฌผ์ ์ญ์ ํด๋ ๋๋ค.
git log --graph --all --decorate
๋ก merge ํํฉ์ ์๊ฐ์ ์ผ๋ก ๋ณผ ์ ์๋ค.
git - Book
์ํํ ์ฝ๋ฉ์ฌ์ - ๊ฐ์ฅ ์ฌ์ด Git ๊ฐ์ข - (์) ํผ์์์
ํธ
์ํํ ์ฝ๋ฉ์ฌ์ - ๊ฐ์ฅ ์ฌ์ด Git ๊ฐ์ข - (ํ) Githubํธ
์ํ์ฝ๋ฉ - Github.com
๐ Git Rebase
๋๋ฆผ์ฝ๋ฉ by ์๋ฆฌ - ๊น, ๊นํ๋ธ ์ ๋๋ก ๋ฐฐ์ฐ๊ธฐ (๊ธฐ๋ณธ ๋ง์คํฐํธ, ์ค๋ฌด์์ ๊ฟ๋ฆฌ์ง ๋ง์)
๋
ธ๋ง๋ ์ฝ๋ Nomad Coders - ๊น. ๊นํ๋ธ. ๊ธฐ์ด๊ฐ๋
์ก์๋๋ฆผ. 5๋ถ ์์ญ.