ํฐ์คํ ๋ฆฌ ๋ทฐ
๐จ Git
์ฝ๋ ๋ฒ์ ๊ด๋ฆฌ ํ๋ก๊ทธ๋จ(ํด), ๋ฒ์ ์ ํธ๋ฆฌํ๊ฒ ๊ด๋ฆฌํ ์ ์๋๋ก ๋์์ฃผ๋ ๋๊ตฌ
Git์ ๋ชฉ์
1) ๋ฒ์ ๊ด๋ฆฌ
2) ๋์ ํ์
3) ๋ฐฑ์
๋ฒ์ ๊ด๋ฆฌ?
ํ์ผ์ ๋ณํ๋ฅผ ์๊ฐ์ ๋ฐ๋ผ์ ๊ธฐ๋กํ๋ค๊ฐ ๋์ค์ ํน์ ์์ ์ ๋ฒ์ ์ ๋ค์ ๊บผ๋ด์ฌ ์ ์๋ ์์คํ
๋ฒ์ ๊ด๋ฆฌ์ ์ฅ์
1) ์ง๋ ๊ณผ์ ํ์ธ ๊ฐ๋ฅ
2) ์ธ์ ๋ ์ด์ ๋ฒ์ ์ ์ฝ๋๋ก ๋์๊ฐ ์ ์์
3) ๊ฐ๋ฐ์๋ผ๋ฆฌ ํ์
ํ ์ ์์
์์ ์, ํ์ผ์ ์๋ก ๋ง๋ค๋ฉด ๊ด๋ฆฌ๊ฐ ํ๋ค๊ธฐ ๋๋ฌธ
๐ปGitHub
Git์ผ๋ก ๊ด๋ฆฌํ๋ ํ๋ก์ ํธ๋ฅผ ์ฌ๋ ค๋ ์ ์๋ ์ฌ์ดํธ
- ์ธ๋ถ ์ปดํจํฐ๋ฅผ ๋ฐ๋ก ๋ง๋ จํ์ง ์์๋ ์์
ํ ๋ด์ฉ(๋ฐฑ์
๋ณธ)์ ๋ด ์ปดํจํฐ๊ฐ ์๋ ๋ค๋ฅธ ๊ณณ์ ์ ์ฅ ๊ฐ๋ฅ
- ์ธ๋ถ์ ์ปดํจํฐ๋ฅผ ๋์ ๋ง๋ค์ด์ฃผ๋ ์๋น์ค (์๊ฒฉ ์ ์ฅ์๋ฅผ ๋์ ์ ๊ณตํด์ฃผ๋ ์๋น์ค)
=> ๋ค๋ฅธ ์ฌ๋๊ณผ ํ์
๊ฐ๋ฅ
1. ๋ ํฌ์งํ ๋ฆฌ(repository)
์ ์ฅ์
์ปค๋ฐ์ด ์ ์ฅ๋๋ ์ฅ์, ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์ ๊ฐ ๋ฒ์ ์ด ๋ด๊ธฐ๋ ์ ์ฅ์
ํ๋ก์ ํธ์ ๋ณ๊ฒฝ ์ฌํญ๋ค์ด ๋ฒ์ ๋ณ๋ก ์ ์ฅ โ .git ๋๋ ํ ๋ฆฌ๊ฐ ๋ง๋ค์ด์ง โ ์ด๋ฅผ ๋ ํฌ์งํ ๋ฆฌ๋ผ๊ณ ํจ
2. ์ปค๋ฐ(commit)
๋ฌด์ธ๊ฐ๋ฅผ ํํ๋ค, ๊ธฐ๋กํ๋ค
ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์ ํน์ ๋ชจ์ต์ ํ๋์ ๋ฒ์ ์ผ๋ก ๋จ๊ธฐ๋ ๋์(ํ์ & ๊ฒฐ๊ณผ๋ฌผ)
- ์ปค๋ฐํ๋ ๋น์์ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์ ๋ชจ์ต์ด ์ฌ์ง์ฒ๋ผ ๋ ํฌ์งํ ๋ฆฌ์ ์ ์ฅ๋จ(๊ทธ ๊ณ ์ ๋ ๊ฒฐ๊ณผ๋ฌผ ์์ฒด๋ ์ปค๋ฐ์ด๋ผ ํจ)
- ์ปค๋ฐ์ ํตํด์ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํ ์ ์์
- ๊ณผ๊ฑฐ์ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ๋ชจ์ต์ ๋ณผ ์ ์์
[Git์ 3๊ฐ์ง ์์ ์์ญ]
1. working directory (=working tree)
์์
์ ํ๋ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ
2. staging area (=index)
git addํ ํ์ผ๋ค์ด ์กด์ฌํ๋ ์์ญ
- working directory ์์์ ์์ ํ ํ์ผ์ git addํ๋ฉด ๊ทธ ํ์ผ๋ค์ด staging area์ ์ฌ๋ผ๊ฐ๊ฒ ๋๊ณ , ์ดํ ์ปค๋ฐํ๋ฉด staging area์ ์๋ ํ์ผ๋ค๋ง ์ปค๋ฐ์ ๋ฐ์ -> ์ํ๋ ๊ฒ๋ค๋ง ์ ๋ณ์ ์ผ๋ก ์ปค๋ฐ์ ๋ฐ์ํ ์ ์์
3. repository
์ปค๋ฐ๋ค์ด ์ ์ฅ๋์ด ์๋ ์์ญ (working directory์ ๋ณ๊ฒฝ ์ด๋ ฅ๋ค ์ ์ฅ)
-> ์ปค๋ฐ ์, ์ค๋
์ท(snapshot)์ฒ๋ผ repository์ ์ ์ฅ
โจGit ์ฌ์ฉํ๊ธฐ
git init ํ์ฌ ๋๋ ํ ๋ฆฌ๋ฅผ git์ด ๊ด๋ฆฌํ๋ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๋ก ์ค์ ํ๊ณ ๊ทธ ์์ ๋ ํฌ์งํ ๋ฆฌ(.git) ์์ฑ

=> ์ด์ Git์ผ๋ก ๋ฒ์ ๊ด๋ฆฌ ํ ์ ์์
โ[์ฒซ Commit์ ํ๊ธฐ ์ ์ ๊ผญ ํด์ผํ ๊ฒ]
=> git์๊ฒ commitํ ์ฌ๋ ์๋ ค์ฃผ๊ธฐ(๊ฐ์ )
1) ์ด๋ฆ๊ณผ ์ด๋ฉ์ผ์ฃผ์ ์ค์
git config configure ์ค์ ํ๋ค, ๊ตฌ์ฑํ๋ค
git config user.name "sodait"
git config user.email "sodait@email.com"
=> ์ปค๋ฐ ์, ์ปค๋ฐ์ ์ด๋ฆ๊ณผ ์ด๋ฉ์ผ ์ฃผ์๋ ํจ๊ป ์ ์ฅ
2) ์ปค๋ฐํ ํ์ผ git add๋ก ์ง์ ํด์ฃผ๊ธฐ
git add hello.js
์ปค๋ฐํ๊ธฐ ์ ์๋ ์ปค๋ฐํ ํ์ผ์ ๋ฏธ๋ฆฌ ์ง์ ํด์ค์ผ ํจ (์์ ๋ ํ์ผ์ ๋ชจ์ต์ด ์ปค๋ฐ์ ํฌํจ๋ ๊ฒ์ด๋ผ ์ง์ ํ๋ ๊ฒ)
3) ์ปค๋ฐ๋ฉ์์ง ๋จ๊ธฐ๊ธฐ(์ต์ -m)
git commit -m "์ปค๋ฐ์ ๊ดํ ์ ๋ณด"
git status ์ํ
๊น์ด ์ธ์ํ๊ณ ์๋ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์ ํ์ฌ ์ํ๋ฅผ ๋ณด์ฌ์ค

stage: git add๋ก ํ์ผ์ staging area์ ์ถ๊ฐํ๋ ๊ฒ
(๋ณ๊ฒฝ ์ฌํญ์ ์์์ง๋ง git add๋ฅผ ํด ์ฃผ์ง ์์ staging area์ ์ถ๊ฐ๋์ง๋ ์์ ํ์ผ)
ํ์ฌ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ๋ด์์ ๋ณ๊ฒฝ์ฌํญ์ด ์๋ ๋ชจ๋ ํ์ผ๋ค ํ ๋ฒ์ staging area์ ์ถ๊ฐ
git add .
git reset [ํ์ผ ์ด๋ฆ] : ์ด๊ธฐํํ๋ค git add ์ทจ์ํ๊ธฐ (staging area์ ์ฌ๋ ธ๋ ํ์ผ ๋ค์ ๋ด๋ฆฌ๊ธฐ)
๋ฆฌ๋ชจํธ(Remote) ๋ ํฌ์งํ ๋ฆฌ / ๋ก์ปฌ(Local) ๋ ํฌ์งํ ๋ฆฌ
์์
ํ๋ ๋ด์ฉ ์ ์ก์ = ๋ ํฌ์งํ ๋ฆฌ ์ ์ก์ด๋ผ๊ณ ํจ
- github์์ ๋ง๋ ๋ ํฌ์งํ ๋ฆฌ = ๋ฆฌ๋ชจํธ ๋ ํฌ์งํ ๋ฆฌ(Remote Repository) ์๊ฒฉ ๋ ํฌ์งํ ๋ฆฌ
- ๋ด ์ปดํจํฐ์ ์๋ ๋ ํฌ์งํ ๋ฆฌ = ๋ก์ปฌ ๋ ํฌ์งํ ๋ฆฌ(Local Repository)

Remote Repository ์ฌ์ฉ ์ด์
1) ์์ ์ฑ (๋ก์ปฌ ๋ ํฌ์งํ ๋ฆฌ๊ฐ ์์ด์ก์ ๊ฒฝ์ฐ ๋ณต์ ๊ฐ๋ฅ)
2) ํ์
๊ฐ๋ฅ (๋ฆฌ๋ชจํธ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ๊ฐ์ ธ์์ ๋ด์ฉ ์ถ๊ฐ ํ ๋ค์ ์ปค๋ฐ ๊ฐ๋ฅ)
์ฌ์ฉ ์์
- GitHub ํ์ด์ง์์ ์ง์ ๋ด์ฉ์ ์์ ํ๊ฑฐ๋
- ๋ค๋ฅธ ์ฌ๋์ด ๊ทธ ๋ฆฌ๋ชจํธ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์์ ์ ์ปดํจํฐ๋ก ๊ฐ์ ธ๊ฐ์ ์์ ํ ๋ค์ ๋ค์ ๋ฆฌ๋ชจํธ ๋ ํฌ์งํ ๋ฆฌ์ git pushํ ๊ฒฝ์ฐ
git push : ๋ฐ๋ค, ๋ฐ์ด๋ฃ๋ค Local ๋ ํฌ์งํ ๋ฆฌ ๋ด์ฉ์ โ Remote ๋ ํฌ์งํ ๋ฆฌ์ ๋ณด๋ด๊ธฐ
git pull : ์ก์๋น๊ธฐ๋ค Remote ๋ ํฌ์งํ ๋ฆฌ์ ๋ด์ฉ์ โ ์์ ์ Local ๋ ํฌ์งํ ๋ฆฌ์ ๊ฐ์ ธ์ค๊ธฐ
cat README.md : ์ถ๋ ฅ
git clone [ํ๋ก์ ํธ์ GitHub์ ์ฃผ์] : ๋ณต์ ํ๋ค ๊นํ๋ธ ํ๋ก์ ํธ์ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ๊ทธ๋๋ก ๋ณต์
git log ๊ธฐ๋ก, ์ผ์ง ์ปค๋ฐ ํ์คํ ๋ฆฌ ์ถ๋ ฅ
์ปค๋ฐ ์์ด๋(=์ปค๋ฐ ํด์) / ์ปค๋ฐํ ์ฌ๋ / ์ปค๋ฐํ ๋ ์ง / ์ปค๋ฐ๋ฉ์์ง

git log --pretty=online ์ปค๋ฐ ํ์คํ ๋ฆฌ ํ ์ค์ ๊น๋ํ๊ฒ ๋ณด๊ธฐ (--pretty ๋ค์ =online์ ์ต์
์ค ํ๋)

git show [์ปค๋ฐ์์ด๋] (์ 4์๋ฆฌ์ ๋๊น์ง๋ง ์ณ๋ ๋จ) : ํด๋น ์ปค๋ฐ์ ์ด๋ค ๋ณ๊ฒฝ์ฌํญ์ด ์์๋์ง ํ์ธ (ํด๋น ์ปค๋ฐ๊ณผ ๋ฐ๋ก ์ด์ ์ปค๋ฐ์ ์ฐจ์ด์ ๋ณด์ฌ์ค)
git commit --amend ์์ ํ๋ค, ๊ณ ์น๋ค ๊ฐ์ฅ ์ต๊ทผ ์ปค๋ฐ ์์ ํ๊ธฐ(โ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์์ ํ ์ ์๋ vim์ฐฝ ๋ธ)
git diff [์ปค๋ฐ A ์์ด๋] [์ปค๋ฐ B ์์ด๋] ๋ ์ปค๋ฐ๊ฐ์ ์ฐจ์ด ๋ณด๊ธฐ
HEAD : ๋ณดํต ๊ฐ์ฅ ์ต๊ทผ์ ํ ์ปค๋ฐ์ ๊ฐ๋ฆฌํด(๋งค๋ฒ ๋ ์๋ก์ด ์ปค๋ฐ ๊ฐ๋ฆฌํด)
HEAD๊ฐ ๊ฐ๋ฆฌํค๋ ์ปค๋ฐ์ ๋ฐ๋ผ working directory ๊ตฌ์ฑ
branch ๋ธ๋์น
๋๋ญ๊ฐ์ง ํ๋์ ์ฝ๋ ๊ด๋ฆฌ ํ๋ฆ
ex) ํ๋์ ํ๋ก์ ํธ ๋ด์์ ๋ ๊ฐ์ ๋ธ๋์น๋ฅผ ๋ง๋ค ์ ์์(๋ ๊ฐ์ง ๋ฒ์ ex.์ ๋ฃ/๋ฌด๋ฃ)

๋งจ ์ฒ์ํ๋ ์ปค๋ฐ(original) = root(๋ฟ๋ฆฌ) commit
On branch master ๋ง์คํฐ ๋ธ๋์น ์์ ์๋ค => ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ์ปค๋ฐํ๋ฉด ์๋์ผ๋ก ์๊ธฐ๋ ๋ธ๋์น(๊ธฐ๋ณธ ๋ธ๋์น)
git branch [๋ง๋ค๊ณ ์ถ์ ๋ธ๋์น ๋ช
] ์๋ก์ด ๋ธ๋์น ๋ง๋ค๊ธฐ
git checkout [๊ฐ๊ณ ์ถ์ ๋ธ๋์น๋ช
] ๋ธ๋์น ์ด๋ํ๊ธฐ
'Git' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL] ๋ก์ปฌ ํ์ผ ๊น ๋ ํฌ์งํ ๋ฆฌ ์ฐ๋ํ๊ธฐ (0) | 2021.04.24 |
---|---|
[TIL] git ์ปค๋ฐ ํ, conflict ์ค๋ฅ๋ฌ์ ๋ (2) | 2021.03.24 |
[TIL] ํ๋ก์ ํธ Git ์ ๋ฆฌ (0) | 2021.03.08 |