Copy $ git ๋ช
๋ น์ด --help ๋ช
๋ น์ด์ ๋ํ ์ค๋ช
์ ์์ธํ ๋ณผ ์ ์๋ค.
git์ ๊ธฐ๋ณธ์ค์ ์ ๋ณ๊ฒฝํ ์ ์๋ค.
Copy git config --global user.name "์ด๋ฆ"
git config --global user.email "์ด๋ฉ์ผ์ฃผ์" ๊ฐ๊ฐ์ ๋ฒ์ ์ ๋๊ฐ ๋ง๋ ๊ฒ์ธ์ง ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผํ๋๋ฐ ์์ ๊ฐ์ด username๊ณผ email์ ์ค์ ํ ์ ์๋ค. (railsinstaller์ค์น ํ ์ฒ์ ์
๋ ฅํ ์ ๋ณด!)
์๋ก์ด ์ ์ฅ์ ๋ง๋ค๊ธฐ
๋ชจ๋ ๊ฒ์ init ์ผ๋ก ๋ถํฐ ์์๋๋ค.
Copy $ git init
Initialized empty Git repository in /Users/dh0023/gittest/.git/
$ ls -al
total 0
drwxr-xr-x 3 dh0023 staff 102 3 23 17:08 .
drwxr-xr-x+ 34 dh0023 staff 1156 3 23 17:08 ..
drwxr-xr-x 10 dh0023 staff 340 3 23 17:08 .git git init์ ํ๋ฉด ํ์ฌ ๋๋ ํ ๋ฆฌ๊ฐ ๋ฒ์ ๊ด๋ฆฌ์ ์ ์ฅ์ ๊ฐ ๋์๋ค๋ ์๋ฏธ์ด๋ค.
ls -al์ ํ๋ฉด .git directory(ํด๋)๊ฐ ์๊ธด ๊ฒ์ ๋ณผ ์ ์๋ค..git ํด๋ ์์์ ๋ฒ์ ๊ด๋ฆฌ๊ฐ ์ด๋ฃจ์ด์ง๋ค.
์ํํ์ธํ๊ธฐ
untracked files: ์ ๋ฒ์ ๊ด๋ฆฌ๊ฐ ๋์ง์๊ณ ์๋ ํ์ผ๋ก์ ์๋ก ์ถ๊ฐ, ์์ , ์ญ์ ์ฆ ๋ณ๊ฒฝ๋ ํ์ผ์ด๋ค. ๋ฒ์ ๊ด๋ฆฌ๊ฐ ๋์ง์๊ณ ์๋ ํ์ผ,ํด๋๋ ๋ถ์์ ์ผ๋ก ํ์ ๋๋ค.
new file: ์ ๋ฒ์ ๊ด๋ฆฌ์ ์๋ก ์ถ๊ฐ๋ ํ์ผ์ด๋ฉฐ, ์ด๋ก์ ์ผ๋ก ํ์๋๋ค.(git add๋ช
๋ น์ด๋ฅผ ํตํด ์ถ๊ฐ)
๋ฒ์ ๊ด๋ฆฌ ๋ชฉ๋ก์ ์ถ๊ฐํด ์ฃผ๋ ๊ฒ์ด๋ค.
git add .์ ๋ณ๊ฒฝ๋ ๋ชจ๋ ์ฌํญ์ ์ถ๊ฐํ๋ค๋ ์๋ฏธ
add๋ช
๋ น์ด ํ git status๋ฅผ ํด๋ณด๋ฉด changed to be Committed: ํ์ผ์ด ๋ฒ์ ๊ด๋ฆฌ ๋๊ณ ์๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
์ด๋๊น์ง ๋ณ๊ฒฝ๋ ๊ฒ์ ํ์ ํ๋ ๊ฒ์ด๋ค. ""์์๋ ๋ฒ์ ์ ๋ํ ์ค๋ช
์ ๊ฐ๋จํ ์ ์ด์ค๋ค.
์ถ๊ฐ์ ์ธ ์ค๋ช
์ ์์ธํ๊ฒ ์ ์ ์ ์๋ค.
์๋ฒ์ ์ฌ๋ฆฌ๊ธฐ
ํ์ฌ์ ๋ณ๊ฒฝ ๋ด์ฉ์ ์์ง ๋ก์ปฌ ์ ์ฅ์์ HEAD ์์ ๋จธ๋ฌผ๊ณ ์๋ค. push๋ช
๋ น์ด ์ดํ์ ๋ณ๊ฒฝ๋ด์ฉ์ด ์๋ฒ์ ์ ์ฉ๋๋ค.
master ๋ธ๋์น๋ฅผ origin ์๋ฒ์ ์ฌ๋ฆฌ๋ ค๋ฉด ์๋์ ๊ฐ์ด ํ๋ฉด๋๋ค.
์ ์ฅ์ ๋ฐ์์ค๊ธฐ
ํน์ ๋ธ๋์น๋ก ์ ์ฅ์๋ฅผ ๋ฐ์์ค๊ณ ์ถ์ผ๋ฉด ์๋์ ๊ฐ์ด ์ต์
์ ์ฃผ๋ฉด ๋๋ค.
Reset์ ์ ํํ ๋ฒ์ ์ ์ํ๋ก ๋์๊ฐ๋ ๊ฒ, ๋ฒ์ ์ ์ง์๋ฒ๋ฆผ
https://res.cloudinary.com/practicaldev/image/fetch/s--vtdH0y_D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://storage.kraken.io/kk8yWPxzXVfBD3654oMN/f0ae16e339631560090233b4c5850990/git-reset.png Revert๋ ์ ํํ ๋ฒ์ ์ ์ทจ์ํด์ ๊ทธ ์ด์ ์ํ๋ก ๋๋ฆฌ๋๊ฒ
https://res.cloudinary.com/practicaldev/image/fetch/s--jatxl5-W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://storage.kraken.io/kk8yWPxzXVfBD3654oMN/782bf25d88e360df15ef96d84d872181/git-revert.png revert ์ reverse ๋ฅผ ํ ๋๋ ํญ์ ์ฃผ์ํด์ผํ๋ค.
Branch ์์ฑํ๊ธฐ
branch๋ ์์ ํ๊ฒ ๊ฒฉ๋ฆฌ๋ ์ํ์์ ๋ฌด์ธ๊ฐ๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉ.
์ ์ฅ์๋ฅผ ์๋ก ๋ง๋ค๋ฉด master branch(default)๊ฐ ๊ธฐ๋ณธ์ด๋ค.
์คํ์ ์ธ ์์
์ ํด์ผํ๋๊ฒฝ์ฐ๋ ํ์
์ ํ ๋ ์ฌ์ฉ. exp branch๊ฐ ์์ฑ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. *๋ถ์ ๊ฒ์ด ํ์ฌ branch
์ด์ commit์ผ๋ก branch๋ฅผ ์์ฑ
ํด๋น commit์์ ๋ธ๋์น๊ฐ ์์ฑ๋๋ค.
git log์ ๋ํด ์์๋ณด๊ธฐ
ํ์ฌ Branch๋ณ๊ฒฝ
ํ์ฌ branch๊ฐ *exp๋ก ๋ฐ๋๊ฒ์ ํ์ธ ํ ์ ์๋ค.
remote์ ์๋ branch๋ฅผ ๊ฐ์ ธ์ ๋ก์ปฌ์ ๋์ผํ ์ด๋ฆ์ ๋ธ๋์น๋ฅผ ์์ฑํ๋ฉด์ ํด๋น branch๋ก checkoutํ๋ ์ต์
์ด๋ค.
Branch ์์ฑ๊ณผ ๋์์ ๋ณ๊ฒฝํ๊ธฐ
๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ(fetch)
fetch๋ ๋จ์ํ ์๊ฒฉ ์ ์ฅ์์ ๋ด์ฉ์ ํ์ธ๋ง ํ๊ณ ๋ก์ปฌ ๋ฐ์ดํฐ์ ๋ณํฉ์ ํ๊ณ ์ถ์ง ์์ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค.
์ฆ, local์๋ ์์ง๋ง remote ์ ์ฅ์์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
branch๋ฅผ ์ด์ฉํด ๋ณํฉ์ ํ๋ฉด git์ด ์๋์ผ๋ก commit์ ํด์ค๋ค.
๋ณํฉํ branch์ ๋ชจ๋ commit์ ํ๋๋ก ํฉ์น๊ณ ์ถ์๋ --squash ์ต์
์ ์ง์ ํ๋ฉด๋๋ค.
์๊ฒฉ ์ ์ฅ์์ ๋ณ๊ฒฝ ๋ด์ฉ์ด ๋ก์ปฌ ์์
๋๋ ํ ๋ฆฌ์ ๋ฐ์์ง๊ณ (fetch), ๋ณํฉ(merge)๋๋ค.
์ถฉ๋(conflict)
๋ง์ฝ์ ์ฌ๋ฌ๊ฐ์ branch๊ฐ ์๋ก ๊ฐ์ ๊ฒ์ ์์ ํ ๊ฒฝ์ฐ์ ๊น์ ์ถฉ๋์ ๋ํ๋ด๊ณ ์ฐ๋ฆฌ๊ฐ ์์ ํ ์ ์๋๋ก ํ์ํด์ค๋ค.
์ด๋ ํ ์์
์ ํ๊ธฐ์ ์ pull์ ํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข๋ค! pull ->working-> commit -> pull -> push
์์ง commitํ์ง ์์ ๋ฒ์ ์ ์์๋ก ์ ์ฅํ๋ ๊ฒ! stash๋ฅผ ํ๋ฉด ์์๋ก ์ ์ฅ๋ ํ ๋ง์ง๋ง ๋ฒ์ ์ํ๋ก ๋์๊ฐ๊ณ ์ญ์ ๋๋ค.
tag(github์์ releases)
์ค๋ช
ํด์ฃผ๋ ๊ฒ! ๊ณผ๊ฑฐ์ ํน์ ํ ๋ฒ์ ์ ๋ํด์๋ ํ๊ทธ๋ฅผ ๋ถ์ผ ์ ์๋ค.
.gitignoreํ์ผ์ ํ์ผ์ ์ถ๊ฐํ๋ฉด git์ด ์๋๊ฑธ๋ก ๊ฐ์ฃผํ ๋์์ด ๋๋ค.(github์ ์ฌ๋ฆด๋๋ ์์ฌ๋ผ๊ฐ!) ignore์ ํฌํจ๋์ด์ผํ ๋ชฉ๋กarrow-up-right
์ด ๋ ์ค์ํ id, ๋น๋ฐ๋ฒํธ, key๊ฐ์ด ์ค์ ๋ ํ์ผ์ ๋ฐ๋ก ์ ์ฅํ ํ .gitignore์ ์ถ๊ฐํด ์๊ฒฉ์ ์ฅ์์ ์ฌ๋ฆฌ์ง ์๋๋ค.