- Published on
๐ Git(2)-๋๋ฆผ์ฝ๋ฉ ์ ํฌ๋ธ ๊ฐ์ ์ ๋ฆฌ
- ๊ธ์ด์ด
๐ ๋ชฉ์ฐจ
part2.Basic
- git workflow
- git add
- git ignore
- git status
- git diff
- git commit
1. git workflow
git์๋ ํฌ๊ฒ ์ด 3๊ฐ์ง์ ์์ ํ๊ฒฝ์ด ๋๋ ์ ธ ์๋ค.
- working directory : ํ๋ก์ ํธ์ ํ์ผ์ ์์ ํ๋ ๊ณณ
- staging area : ๋ฒ์ ผ ํ์คํ ๋ฆฌ์ ์ ์ฅ ํ ์ค๋น๊ฐ ๋์ด์๋ ํ์ผ๋ค์ ์ฎ๊ฒจ ๋๋ ๊ณณ
- .git directoroy : commit๋ช ๋ น์ด๋ฅผ ์ด์ฉํด ํ์ผ์ ์ ์ฅํด๋๋ ๊ณณ
.git directory์ ์ ์ฅ๋ ๋ฒ์ ผ๋ค์ check out
์ด๋ผ๋ ๋ช
๋ น์ด๋ฅผ ์ด์ฉํด์ ์ธ์ ๋ ์ง ์ํ๋ ๋ฒ์ ์ผ๋ก
๋ค์ ๋์๊ฐ ์ ์๋ค.
๋ํ ๋ณดํต ๋ด ์ปดํจํฐ์๋ง ์ ์ฅ๋๊ธฐ๋๋ฌธ์, push
๋ผ๋ ๋ช
๋ น์ด๋ฅผ ์ด์ฉํด ๋์ git directory๋ฅผ ์๋ฒ์ ์
๋ก๋ํด๋๋ค. ์๋ฒ์์ ๋ค์ ๋ด ์ปดํจํฐ์ ๋ค์ด๋ก๋ํ ๋๋ pull
์ด๋ผ๋ ๋ช
๋ น์ด๋ฅผ ์ด์ฉํด ๋ค์ด๋ฐ๋๋ค.
๊ฐ๊ฐ์ commit๋ค์ snapshot๋ ์ ๋ณด๋ค์ ๊ธฐ๋ฐ์ผ๋ก ๊ณ ์ ํ ํด์ ์ฝ๋๊ฐ ๋ถ๊ฐ๋๋ค.์ด ์ฝ๋๋ฅผ ์ด์ฉํด ๋ฒ์ ์ ๋ณด๋ฅผ ์ฐธ์กฐํ ์ ์๋ค.๊ทธ๋ฆฌ๊ณ ์ด commit์๋ id๋ฟ ์๋๋ผ ๋ฒ์ ์ ๊ด๋ จ๋ ๋ฉ์์ง,์ ์,๋ ์ง์ ์๊ฐ ์ ๋ณด๋ ํจ๊ป ํฌํจ๋์ด ์๋ค.
working directory
- untracked์ tracked๋ก ๋๋ ์ง๋ค.
- git์ด ํธ๋ํนํ๋ ํ์ผ์ด๋ฉด tracked, ์๋ก ๋ง๋ค์ด์ง ํ์ผ์ด๋ ๊ธฐ์กด์ ์กด์ฌํ๋ ํ๋ก์ ํธ์์ ๊น์ ์ด๊ธฐํํ๋ฉด ๊น์ด ํ์ผ์ ๋ํ ์ ๋ณด๊ฐ ์์ด untracked๋๋ค.
- ๋ํ tracked๋ ์์ ์ฌ๋ถ์ ๋ฐ๋ผ unmodified, modified๋ก ๋๋๋ค. ์์ ์ด ๋์ง ์์๋ค๋ ๊ฒ์ ์ด์ ๋ฒ์ ผ์ ๋นํด ์์ ์ด ์๋์๋ค๋ ์๋ฏธ๊ณ , ์์ ์ด๋ modifiedํ์ผ๋ง staging area๋ก ๊ฐ ์ ์๋ค.
2. git add
์์ )
echo hello world! > b.txt
echo hello world! > c.txt
ํฐ๋ฏธ๋์์๋ ์๋ก ํฅํ๋ ๋ฐฉํฅํค๋ฅผ ๋๋ฅด๋ฉด ์ด์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฌ์ฉํ ์ ์๋ค.
์ฌ๊ธฐ์ ls
๋ฅผ ์
๋ ฅํ๋ฉด ํ์ฌ ๋ง๋ค์ด์ง txtํ์ผ๋ค์ ํ์ธํ ์ ์๊ณ
git status
๋ฅผ ์
๋ ฅํ๋ฉด ์ง๊ธ ํ์ฌ ํ์ผ๋ค์ ์ํ๋ฅผ ํ์ธํ ์ ์๋ค.
:์ด๋ค ๋ธ๋์น์ ์๋์ง, ์ปค๋ฐ ์ฌ๋ถ, ํธ๋ํน ์ฌ๋ถ
๊น์ด trackingํ ์ ์๋๋ก ํ์ผ๋ค์ staging area์ ์ฎ๊ธฐ๋ ค๋ฉด
git add
๋ช
๋ น์ด๋ฅผ ํฐ๋ฏธ๋์ ์
๋ ฅํ๋ค.
a.txtํ์ผ๋ง ์ฌ๋ฆฌ๊ณ ๋ค์ git status
๋ฅผ ์
๋ ฅํ๋ฉด
์ด๋ ๊ฒ ์ปค๋ฐํ ์ค๋น๊ฐ ๋ ๋ณ๊ฒฝ์ฌํญ,a.txtํ์ผ์ ๋ณผ ์ ์๋ค.
์กด์ฌํ๋ ๋ชจ๋ txtํ์ผ์ staging area์ ์ฎ๊ธฐ๊ณ ์ถ๋ค๋ฉด
git add *.txt
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. * - ์ ์ฒด๋ฅผ ์๋ฏธ
๋ชจ๋ ํ์ผ์ ์ฎ๊ธฐ๊ณ ๋์ a.txtํ์ผ๋ง ์์ ํ๋ฉด
๋ค์ git status
๋ช
๋ น์ ์
๋ ฅํ์๋ modified๋ a.txtํ์ผ์ ๋ณผ ์ ์๋ค.
git rm --cached <file>...
์ํ๋ ํ์ผ์ ์ฌ๊ธฐ ๋ฃ์ด ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด
๊ทธ ํ์ผ์ ๋ค์ working directory - untracked ์ํ๋ก ๋ด๋ ค๋ณด๋ผ ์ ์๋ค.
git add *
๋ช
๋ น์ด๋ฅผ ์ฐ๋ฉด git ์ ์๋ ๋ชจ๋ ํ์ผ์ git staging area๋ก ๋ณด๋ผ ์ ์๋ค. (์ญ์ ๋ ํ์ผ ๋นผ๊ณ )
๊ทธ๋ฐ๋ฐ git add .
๋ช
๋ น์ด๋ฅผ ์ฐ๋ฉด ์ญ์ ๋ ํ์ผ๊น์ง ๋ชจ๋ git staging area๋ก ๋ณด๋ผ ์ ์๋ค.
3. git ignore
trackingํ๊ณ ์ถ์ง ์์ ํ์ผ๋ค, git์ ํฌํจํ๊ณ ์ถ์ง์์ ํ์ผ๋ค์ git ignoreํ์ผ์ ๋ฃ๋๋ค.
๋ง์ฝ .log๋ก ๋๋๋ ํ์ผ๋ค์ ๋ชจ๋ git์ ๋ฃ๊ณ ์ถ์ง ์๋ค๋ฉด,
echo *.log > .gitignore
๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด ๋ชจ๋ logํ์ผ์ด gitignoreํ์ผ์ ์ถ๊ฐ๋๋ค.
๋ง์ฝ'ํด๋์ด๋ฆ/'์ gitignore์ ๋ฃ์ผ๋ฉด ๊ทธ ํด๋์์ ์๋ ๋ชจ๋ ํ์ผ์ gitignore์์ ๋ฃ๊ฒ๋๋ค.
4. git status
git status -h
๋ฅผ ํฐ๋ฏธ๋์ ์
๋ ฅํ๋ฉด status์ ๊ด๋ จ๋ ๋ชจ๋ ์ต์
์ ๋ณผ ์ ์๋ค.
status์ ์ต์
์ ๋ฐ๋ก ์ ์ฉํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก --long ์ต์
์ด ์ ์ฉ๋๋ค.(default)
-s ๋ก ์ข๋ ๊ฐ๊ฒฐํ๊ฒ ๋ํ๋ด๋ฉด
์ด๋ฐ์์ผ๋ก staging area๋ A, modified๋ M์ผ๋ก ๋ํ๋ด์ง๋ ๊ฑธ ๋ณผ ์ ์๋ค. ํ์ง๋ง ์ด๋ฐ์๋ ๊ธฐ๋ณธ ์ต์ ์ผ๋ก ๊ธธ๊ฒ ๋ณด๋ ๊ฒ์ ์ถ์ฒํ๋ค.
tip)
ํฐ๋ฏธ๋์
์๋์ฐ๋ cntrl+ k
๋งฅ์ cmd + k
๋ฅผ ๋๋ฅด๋ฉด ํฐ๋ฏธ๋ ์ฐฝ์ด ๊นจ๋ํ๊ฒ ์ง์์ง๋ค.
5. git diff
์ ํํ ์ด๋ค ๋ด์ฉ์ด ์์ ๋์๋์ง ๋ณด๋ ค๋ฉด ์ด ๋ช
๋ น์ด๋ฅผ ์คํํ๋ค.
๊ธฐ๋ณธ ์ต์
์ผ๋ก๋ working directory์ ํ์ผ์ ๋ณ๊ฒฝ์ฌํญ๋ง ๋ณด์ฌ์ค๋ค.
staged๋ ํ์ผ๋ค์ ๋ณ๊ฒฝ์ฌํญ์ ๋ณด๊ณ ์ถ๋ค๋ฉด git diff --staged
๋ฅผ ์คํํ๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก git diff -h
๋ฅผ ์
๋ ฅํ๋ฉด diff์์ ์ธ ์ ์๋ ์ต์
๋ค์ ๋ณผ ์ ์๋ค.
git diff -cache
๋ช
๋ น์ด๋ git diff --staged
์ ๊ฐ์ ์๋ฏธ๋ก ์ฐ์ธ๋ค.
ํ
์คํธ ์๋ํฐ์ ์ฐ๊ฒฐํ๋ ค๋ฉด git config --global -e
์ ์คํํ๊ณ
์ด๋ฆฐ ์๋ํฐ์ configํ์ผ์์ ๋ค์ ์ด๋ฏธ์ง์ [diff]์ [difftool "vscode"]๋ถ๋ถ์ ์ถ๊ฐํ๊ณ ์ ์ฅํ๋ค.
๊ทธ๋ค์ ํฐ๋ฏธ๋์์ git difftool
์ ์
๋ ฅํ๊ณ y(yes)๋ฅผ ์
๋ ฅํ๋ฉด vscode๊ฐ ์ฐ๊ฒฐ๋๋ค.
6. git commit
๋ฒ์ ์ ๋ง๋ค ๋ - commit
๋ช
๋ น์ด ์ฌ์ฉ
title๊ณผ description์ ์์ฑํ ํ commitํ๋ฉด ํด์์ฝ๋ id์ title์ด ๋ณด์ฌ์ง๋ค.
git ํ์คํ ๋ฆฌ๋ฅผ ๋ณด๊ธฐ์ํด์๋ git log๋ฅผ ์คํํ๋ค.
๋ณดํต์
git add .
git commit -m "์ปค๋ฐ๋ฉ์์ง"
๋ฅผ ์ ๋ ฅํด ๊ฐ๋จํ๊ฒ commitํ ์ ์๋ค.
๋ง์ฝ staged area์ working directory์ ์๋ ๋ชจ~๋ ํ์ผ์ ์ ๋ถ ํ๋ฒ์ commitํ๊ณ ์ถ๋ค๋ฉด
git commit am "์ปค๋ฐ๋ฉ์์ง"
๋ฅผ ์คํํ๋ฉด ๋๋ค.
๊ถ์ฅ๋๋ ์ปค๋ฐ ๊ท๋ชจ
์ดํ๋ฆฌ์ผ์ด์ ์ ์ธ๋ถํํด์ ๊ธฐ๋ฅ๋ณ๋ก, ์์ ๋จ์๋ก ๋ง๋๋ ๊ฒ์ด ์ค์ํ๋ฏ๋ก ์ ๋นํ ์์ ๋จ์๋ก ๋๋์ด ์ปค๋ฐํ๋๊ฒ ์ข๋ค. ๋ํ, ์๋ฏธ์๋ ๋จ์๋ก ๋๋๊ณ ์ด๋ฆ์ ์ง์ ํด์ ์ปค๋ฐํ๋๊ฒ ์ข๋ค. ๊ผญ! ์ปค๋ฐ ๋ฉ์์ง์ ๋ง๋ ๋ด์ฉ๋ง ์ปค๋ฐํ๊ธฐ!
๋ณดํต ํ์ฌํ,๋์ฌ๋ก ์ปค๋ฐ๋ฉ์์ง๋ฅผ ์์ฑํ๋ค.